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_id
queue_item_data
queued_date
processing_date
processed_date
processed
可队列对象
QueueableInterface
定义了可以入队列的对象。这个接口非常简单,只提供了
setQueueId()
(可以从QueueableTrait
继承)queueId()
(queue_id
获取器)(可以从QueueableTrait
继承)queue($ts = null)
(这是一个抽象方法,必须在实现队列接口的类中实现)
资源
- 贡献
- 报告问题 和 发送拉取请求 在 主要的 Charcoal 仓库