pinkcrab / queue
Perique 框架的简单队列系统,提供了一个简单的接口,允许与其他队列系统一起使用。自带 WooCommerce 行动调度程序的内置驱动程序。
Requires
- php: >=7.4.0
- pinkcrab/perique-framework-core: 2.0.*
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: <=1.0.0
- doctrine/instantiator: ^1.5
- gin0115/wpunit-helpers: 1.1.*
- php-stubs/woocommerce-stubs: dev-master
- php-stubs/wordpress-stubs: 6.4.*
- phpstan/phpstan: 1.*
- phpunit/phpunit: ^8.5 || ^9.0
- roots/wordpress: 6.4.*
- symfony/var-dumper: <=6.2.7
- szepeviktor/phpstan-wordpress: <=1.3.2
- vlucas/phpdotenv: ^5.4
- wp-coding-standards/wpcs: <=2.3.0
- wp-phpunit/wp-phpunit: 6.4.*
- yoast/phpunit-polyfills: ^1.0.0 || ^2.0.0
This package is auto-updated.
Last update: 2024-09-16 22:58:32 UTC
README
Perique Queue
为 PinkCrab Perique 插件框架提供队列抽象。自带内置动作调度程序实现,但可以扩展以与任何其他东西一起运行。
为什么?
我需要一个为 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 个抽象类,可以扩展以创建事件。
PinkCrab\Queue\Event\Async_Event
- 一个简单的事件,将在队列处理完毕后立即运行。PinkCrab\Queue\Event\Delayed_Event
- 一个简单的事件,将在延迟后运行。PinkCrab\Queue\Event\Recurring_Event
- 一个简单的事件,将在延迟后运行,然后再次延迟后运行。
有关更多详细信息,请参阅事件文档。
分发事件和与队列交互
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
类的更多详细信息,请参阅这里的文档。
需求
- PinkCrab Perique 框架 V2 及以上版本。
- PHP7.4+
许可证
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 - 首次发布