morningtrain / wp-queue
为WP创建队列系统
Requires
- morningtrain/php-loader: ^0.3
README
WordPress的队列系统。
目录
简介
此包旨在将任务调度到队列系统中。
它使用WP CLI实现,因此可以从命令行运行。
入门
要开始,请按照以下安装部分中的说明安装包。
要使用包,请参阅用法
安装
使用Composer安装。
composer require morningtrain/wp-queue
用法
注册工作者
要开始使用该模块,只需注册一个任务队列 \Morningtrain\WP\Queue\Queue::registerWorker()
。
您可以将作业队列的名称从默认的 job_queue
更改。您可以将作业队列数据库表的版本从默认的 1.0.0
更改。
\Morningtrain\WP\Queue\Queue::registerWorker();
创建任务
可以通过扩展 Morningtrain\WP\Queue\Abstracts\AbstractJob
并创建一个 handle
方法来创建作业。
您可以通过将 $worker
参数设置为作业队列别名来定义作业应使用哪个作业队列。
现在,您可以通过在您的作业类上调用静态方法 dispatch
来将作业放入队列。
// Job/TestJob.php use Morningtrain\WP\Queue\Abstracts\AbstractJob; class TestJob extends AbstractJob { public static function handle(mixed $args) : mixed { // Do something return 'testing...'; } }
// Another file TestJob::dispatch('test_arg');
或者直接创建作业
作业还可以通过直接从工作者创建,通过将回调传递给 createJob
方法。
\Morningtrain\WP\Queue\Classes\Worker::getWorker('job_queue')->createJob($callback, $args);
参数
如果您在作业中使用参数,请注意,我们使用 call_user_func_array
。因此,如果您传递一个数组,您需要确保您的函数中有与数组中相同数量的参数。如果是键值对,则方法中的参数必须与键相同。
如果您不知道数组中的参数数量,或者您只需要处理一个数据数组,您可以在方法中使用 ...$args
。或者,您可以将数组包裹在一个只包含一个参数的外部数组中。
有关 call_user_func_array
的更多信息,请参阅PHP 文档
运行队列工作者
使用WP CLI运行作业队列。请参阅WP CLI 文档。
启动工作者
使用 wp queue start
命令和工作者别名启动作业队列。
wp queue start job_queue
注意
工作者将一直运行,直到手动停止或终端关闭。您应使用进程监控程序(如Supervisor)来确保进程不会意外停止。
您可以同时运行多个工作者。
停止工作者
要停止无法通过关闭终端停止的工作者,您可以使用 stop
命令和工作者别名。
wp queue stop job_queue
要停止所有工作者,请使用 all
而不是工作者别名。
wp queue stop all
列出可用工作者
要列出可用工作者及其状态,请使用 list
命令。
wp queue list
处理特定作业
使用工作者别名和作业ID调用 wp queue run
来处理特定作业。
wp queue run job_queue 99
注意
您可以使用 --untouched 来不设置运行日期和结果
wp queue run jon_queue 99 --untouched
您可以使用 --force 参数强制运行作业,即使它已经运行过。例如:
wp queue run jon_queue 99 --force
致谢
许可
MIT 许可证(MIT)。更多信息请参阅许可证文件。