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)