pinkcrab/queue

Perique 框架的简单队列系统,提供了一个简单的接口,允许与其他队列系统一起使用。自带 WooCommerce 行动调度程序的内置驱动程序。

2.0.2 2023-12-16 21:03 UTC

This package is auto-updated.

Last update: 2024-09-16 22:58:32 UTC


README

logo

Perique Queue

为 PinkCrab Perique 插件框架提供队列抽象。自带内置动作调度程序实现,但可以扩展以与任何其他东西一起运行。

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require GitHub contributors GitHub issues

WP5.9 [PHP7.4-8.1] Tests WP6.0 [PHP7.4-8.1] Tests WP6.1 [PHP7.4-8.2] Tests WP6.2 [PHP7.4-8.2] Tests WP6.3 [PHP7.4-8.2] Tests WP6.4 [PHP7.4-8.2] Tests

codecov Scrutinizer Code Quality Maintainability

为什么?

我需要一个为 PinkCrab Perique 插件框架提供的队列抽象,并且我希望能够使用它与动作调度程序一起使用,也可以与自定义队列实现一起使用。所以我就创建了它。

安装

Composer

composer require pinkcrab/perique-queue

使用

设置模块

与所有 Perique 模块一样,将 Queue 添加到应用程序中就像将其添加到 App_Factory 中一样简单。

$factory = (new App_Factory(__DIR__))
    ->module( \PinkCrab\Queue\Module\Perique_Queue::class )
    ->default_setup()
    ->boot();

动作调度程序

Perique Queue 默认使用动作调度程序来运行队列。这是使用队列的推荐方法,因为它是最可靠和性能最好的。在设置期间无需进行任何进一步的操作即可使用动作调度程序。

如果网站有 WooCommerce 或其他包含动作调度程序的插件,将使用此插件而不是 Perique Queue 版本,无需进行任何更改。

有关设置模块或创建自定义驱动的更多详细信息,请参阅模块文档

事件

要将操作添加到队列中,必须创建一个实现了 PinkCrab\Queue\Event\Event 的类。为了使这个过程更简单,我们提供了 3 个抽象类,可以扩展以创建事件。

有关更多详细信息,请参阅事件文档

分发事件和与队列交互

Queue_Service 是与队列交互的主要类。它可以注入到通过 DI_Container 创建的任何类中。

use PinkCrab\Queue\Dispatch\Queue_Service;

class My_Class {

    public function __construct( Queue_Service $queue ) {
        $this->queue = $queue;
    }

    public function dispatch_event() {
        $this->queue->dispatch( new My_Event() );
    }

    public function get_next_event() {
        $event = $this->queue->find_next( new My_Event() );
    }

    public function cancel_next_event() {
        $this->queue->cancel_next( new My_Event() );
    }

    public function is_event_pending() {
        $pending = $this->queue->is_scheduled( new My_Event() );
    }
}

通过将 Queue_Service 注入为依赖项,这将允许在测试中更容易地模拟服务。

有关 Queue_Service 的更多信息,请参阅这里

事件监听器

由于队列仅触发 WordPress 动作,因此您可以使用标准 WordPress 动作钩子来监听事件。

add_action( 'my_event', function( $event ) {
    // Do something with the event.
}, 10, 1 );

但我们有一个自定义监听器,您可以使用它来创建类似控制器的类。与 Perique 的一般概念一样,这些是为添加到注册类列表而设计的,并通过注册过程和 DI_Container 进行构造和处理。

要使用它,您可以轻松地扩展 Abstract_Listener 类,然后将类添加到注册类列表中。

<?php
use PinkCrab\Queue\Listener\Abstract_Listener;

class My_Listener extends Abstract_Listener {

    protected string $hook = 'my_event';

    public function handle( array $args ): void {
        // Do something with the event.
    }
}

有关 Abstract_Listener 类的更多详细信息,请参阅这里的文档

需求

许可证

MIT 许可证

https://open-source.org.cn/licenses/mit-license.html

之前 Perique 支持

  • 为了支持 Perique V2 之前的所有版本,请使用本模块的 1.0.* 版本。

变更日志

  • 2.0.2 - 更新 Action Scheduler 至 3.7.1
  • 2.0.1 - 依赖更新
  • 2.0.0 - 更新以支持 Perique V2,添加文档并更新 Action Scheduler 的底层版本。
  • 1.0.0 - 标记发布,更新到 WP6.1 的管道和依赖项。
  • 0.1.2 - 调整 DI 规则定义
  • 0.1.1 - 调整依赖项
  • 0.1.0 - 首次发布