locomotivemtl / charcoal-queue
Charcoal 的队列、队列项和可队列对象
0.5.0
2020-09-16 18:12 UTC
Requires
- php: >=5.6.0
- locomotivemtl/charcoal-core: ~0.3
- locomotivemtl/charcoal-factory: ~0.4
- psr/log: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^5.7 || ^6.5
- squizlabs/php_codesniffer: ^3.0
README
Charcoal 的队列管理器、队列项和可队列对象(通过接口 & 特性)。
如何安装
composer require locomotivemtl/charcoal-queue`
依赖关系
locomotivemtl/charcoal-core
用于CollectionLoader
locomotivemtl/charcoal-factory
用于队列项工厂。
队列系统
队列管理器循环队列项。队列项代表要执行的操作(由 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)
是抽象的,必须在实现队列接口的类中实现
开发
要安装开发环境
$ composer install --prefer-source
使用以下命令运行测试
$ composer test
API 文档
- 自动生成的
phpDocumentor
API 文档可在 https://locomotivemtl.github.io/charcoal-queue/docs/master/ 获得 - 自动生成的
apigen
API 文档可在 https://codedoc.pub/locomotivemtl/charcoal-queue/master/ 获得
开发依赖
phpunit/phpunit
squizlabs/php_codesniffer
php-coveralls/php-coveralls
持续集成
编码风格
Charcoal-Validator 模块遵循 Charcoal 编码风格
- PSR-1
- PSR-2
- PSR-4,因此自动加载由 Composer 提供。
- phpDocumentor 注释。
- 请阅读 phpcs.xml 文件以获取有关代码风格的全部详细信息。
代码风格验证/执行可以使用
composer phpcs
进行。同时,也提供了自动修复工具composer phpcbf
。
作者
- Mathieu Ducharme mat@locomotive.ca
许可证
Charcoal 采用 MIT 许可证。详情请见 LICENSE。