locomotivemtl/charcoal-queue

Charcoal 的队列、队列项和可队列对象

0.5.0 2020-09-16 18:12 UTC

This package is auto-updated.

Last update: 2024-09-15 01:53:50 UTC


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 文档

开发依赖

  • phpunit/phpunit
  • squizlabs/php_codesniffer
  • php-coveralls/php-coveralls

持续集成

编码风格

Charcoal-Validator 模块遵循 Charcoal 编码风格

代码风格验证/执行可以使用 composer phpcs 进行。同时,也提供了自动修复工具 composer phpcbf

作者

许可证

Charcoal 采用 MIT 许可证。详情请见 LICENSE