morningtrain/wp-queue

为WP创建队列系统

v0.4.0 2023-07-06 07:29 UTC

This package is auto-updated.

Last update: 2024-09-06 10:25:20 UTC


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)。更多信息请参阅许可证文件