charcoal / queue
Charcoal 的队列,队列项目和队列对象
v5.0.0
2024-03-13 15:05 UTC
Requires
- php: ^7.4 || ^8.0
- charcoal/core: ^5.0
- charcoal/factory: ^5.0
- psr/log: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
Replaces
README
队列包提供了一种抽象的队列服务,用于延迟处理耗时的任务。
安装
composer require charcoal/queue
使用方法
队列系统
队列管理器循环队列项目。队列项目表示要执行的操作(由 process() 方法定义)。
队列管理器
队列管理器作为一个抽象类 AbstractQueueManager 提供。这个类实现了 QueueManagerInterface。
可以通过 rate 属性(每秒项目数)来控制处理速度(节流)。
可以通过 limit 属性来控制批量限制(每次迭代处理的项目数)。
可以使用 queue_id 来识别队列。它可以通过 setQueueId() 来设置。
可以使用 processQueue() 来处理队列。如果由于任何原因需要加载数据,可以使用 loadQueueItems()。
可以定义 4 个回调函数
setProcessedCallback()setItemCallback()setItemSuccessCallbak()setItemFailureCallback()
只有一个抽象方法
queueItemProto(),它必须返回一个QueueItemInterface实例
队列项目
队列项目应该实现 QueueItemInterface。这可以通过 QueueItemTrait 来帮助实现。
可以使用 queue_id 来识别队列项目。(与队列管理器使用的相同 queue_id)。
可以使用 process($callback, $successCallback, $failureCallback) 来处理项目。
队列项目属性包括
queue_idqueue_item_dataqueued_dateprocessing_dateprocessed_dateprocessed
可队列对象
QueueableInterface 定义了可以入队列的对象。这个接口非常简单,只提供了
setQueueId()(可以从QueueableTrait继承)queueId()(queue_id获取器)(可以从QueueableTrait继承)queue($ts = null)(这是一个抽象方法,必须在实现队列接口的类中实现)
资源
- 贡献
- 报告问题 和 发送拉取请求 在 主要的 Charcoal 仓库