Charcoal Queue
Queue Managers, Queue Items and Queueable objects (through Interface & Trait) for Charcoal., (*1)
How to install
composer require locomotivemtl/charcoal-queue`
Dependencies
-
locomotivemtl/charcoal-core
for the CollectionLoader
-
locomotivemtl/charcoal-factory
for the queue-item factory.
Queueing System
Queue managers loop queue items. Queue items represent actions to be performed (as defined by the process()
method)., (*2)
Queue Manager
The queue manager is available as an abstract class: AbstractQueueManager
.
This class implements the QueueManagerInterface
., (*3)
The processing speed (throttle) can be controlled via the rate
property, in items per second., (*4)
The batch limit (number of items to process per iteration) can be controlled with the limit
property., (*5)
The queue can be identified with the queue_id
. It can be set with setQueueId()
., (*6)
The queue can be processed with processQueue()
.
If for any reason the items need to be loaded, it can be done with loadQueueItems()
., (*7)
There are 4 callbacks that can be defined:, (*8)
setProcessedCallback()
setItemCallback()
setItemSuccessCallbak()
setItemFailureCallback()
There are only 1 abstract method:, (*9)
-
queueItemProto()
which must returns a QueueItemInterface
instance
Queue Items
Queue Items should implement the QueueItemInterface
. This can be helped via the QueueItemTrait
., (*10)
Queue items can be identified with a queue_id
. (The same queue_id
used by the queue manager)., (*11)
Items can be processed with process($callback, $successCallback, $failureCallback)
., (*12)
The queue item properties are:, (*13)
queue_id
queue_item_data
queued_date
processing_date
processed_date
processed
Queuable Objects
The QueueableInterface
defines objects that can be queued. This interface is really simple and only provides:, (*14)
-
setQueueId()
which can be inherited from QueueableTrait
-
queueId()
(queue_id
getter) which can be inherited from QueueableTrait
-
queue($ts = null)
which is abstract and must be written inside class which implement the queueable interface
Development
To install the development environment:, (*15)
$ composer install --prefer-source
Run tests with, (*16)
$ composer test
API documentation
Development dependencies
phpunit/phpunit
squizlabs/php_codesniffer
php-coveralls/php-coveralls
Continuous Integration
Service |
Badge |
Description |
Travis |
|
Runs code sniff check and unit tests. Auto-generates API documentation. |
Scrutinizer |
|
Code quality checker. Also validates API documentation quality. |
Coveralls |
|
Unit Tests code coverage. |
Sensiolabs |
|
Another code quality checker, focused on PHP. |
Coding Style
The Charcoal-Validator module follows the Charcoal coding-style:, (*17)
Coding style validation / enforcement can be performed with composer phpcs
. An auto-fixer is also available with composer phpcbf
., (*18)
Authors
License
Charcoal is licensed under the MIT license. See LICENSE for details., (*19)