morningtrain / wp-async
为WP创建异步任务
This package is auto-updated.
Last update: 2024-09-15 14:30:33 UTC
README
WordPress的异步任务处理器
目录
简介
此包用于将任务异步分发给新线程。
入门
要开始使用,请按照安装部分中的说明安装包。
要使用该包,请参阅用法
安装
使用Composer安装。
composer require morningtrain/wp-async
用法
注册工作者
要开始使用模块,只需注册一个工作者 \Morningtrain\WP\Async\Async::registerWorker().
\Morningtrain\WP\Async\Async::registerWorker();
创建任务
可以通过扩展 Morningtrain\WP\Async\Abstracts\AbstractAsyncTask 并创建一个静态的 handle 方法来创建工作。
use Morningtrain\WP\Async\Abstracts\AbstractAsyncTask; class TestTask extends AbstractAsyncTask { public static function handle($arg1, $arg2) { // Do something; return "$arg1 $arg2"; } }
分发异步任务
您可以通过在您的任务类上调用静态方法 dispatch 来分发一个异步任务。
这将异步运行任务,而无需等待响应。
TestTask::dispatch('arg1', 'arg2');
分发阻塞任务
您还可以通过在您的任务类上调用静态方法 dispatchBlocking 来分发一个阻塞任务。
这将在新线程中运行任务,并等待响应。
TestTask::dispatchBlocking('arg1', 'arg2');
超时
阻塞任务将在5秒后超时。如果您需要更多时间来处理您的阻塞任务,您应该在您的任务类上重写 dispatchBlocking 方法。您可以在工作者上调用 dispatchBlockingTask 方法,并将超时时间(以秒为单位)作为第三个参数。
public static function dispatchBlocking(mixed ...$params) :array|WP_Error { return static::getWorker()->dispatchBlockingTask(static::getCallback(), $params, 30); }
错误处理
您可以从您的任务中返回一个 WP_Error 对象,并将其作为状态400与wp错误信息一起返回。
use Morningtrain\WP\Async\Abstracts\AbstractAsyncTask; class TestTask extends AbstractAsyncTask { public static function handle($arg1, $arg2) { // Do something; $somethingWentWrong = true; if ($somethingWentWrong) { return new \WP_Error('something_went_wrong', 'Something went wrong'); } return "$arg1 $arg2"; } }
您还可以抛出一个可抛出(异常),它将作为状态500与异常消息一起返回。
use Morningtrain\WP\Async\Abstracts\AbstractAsyncTask; use Exception; class TestTask extends AbstractAsyncTask { public static function handle($arg1, $arg2) { // Do something; $somethingWentWrong = true; if ($somethingWentWrong) { throw new Exception('Something went wrong'); } return "$arg1 $arg2"; } }
或者,如果您需要其他响应代码,您还可以返回自己的JSON响应。
use Morningtrain\WP\Async\Abstracts\AbstractAsyncTask; class TestTask extends AbstractAsyncTask { public static function handle($arg1, $arg2) { if (!current_user_can('manage_options')) { wp_send_json_error('You are not allowed to do this!', 401); exit; } // Do something; return "$arg1 $arg2"; } }
贡献
感谢您对项目的贡献兴趣。
错误报告
如果您发现了错误,我们鼓励您创建一个pull request。
要添加错误报告,创建一个新的问题。请记住添加一个描述性的标题、详细的描述以及如何重现问题的方法。
支持问题
我们不为此包提供支持。
拉取请求
- 分支项目
- 创建您的功能分支(git checkout -b feature/AmazingFeature)
- 提交您的更改(git commit -m '添加一些AmazingFeature')
- 将更改推送到分支(git push origin feature/AmazingFeature)
- 打开拉取请求
贡献者
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
开发者