https://github.com/charcoalphp/queue
[READ-ONLY] Queue, Queue Items and Queue-able objects, for Charcoal
https://github.com/charcoalphp/queue
php queue read-only-repository
Last synced: 9 months ago
JSON representation
[READ-ONLY] Queue, Queue Items and Queue-able objects, for Charcoal
- Host: GitHub
- URL: https://github.com/charcoalphp/queue
- Owner: charcoalphp
- License: mit
- Created: 2022-06-21T15:44:58.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-13T15:05:17.000Z (over 2 years ago)
- Last Synced: 2025-06-05T14:16:53.045Z (about 1 year ago)
- Topics: php, queue, read-only-repository
- Language: PHP
- Homepage: https://github.com/charcoalphp/charcoal
- Size: 775 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Charcoal Queue
==============
The Queue package provides an abstract queue service to defer the processing of time consuming tasks.
## Installation
```shell
composer require charcoal/queue
```
## Usage
### Queueing System
Queue managers loop queue items. Queue items represent actions to be performed (as defined by the `process()` method).
### Queue Manager
The queue manager is available as an abstract class: `AbstractQueueManager`.
This class implements the `QueueManagerInterface`.
The processing speed (throttle) can be controlled via the `rate` property, in items per second.
The batch limit (number of items to process per iteration) can be controlled with the `limit` property.
The queue can be identified with the `queue_id`. It can be set with `setQueueId()`.
The queue can be processed with `processQueue()`.
If for any reason the items need to be loaded, it can be done with `loadQueueItems()`.
There are 4 callbacks that can be defined:
* `setProcessedCallback()`
* `setItemCallback()`
* `setItemSuccessCallbak()`
* `setItemFailureCallback()`
There are only 1 abstract method:
* `queueItemProto()` which must returns a `QueueItemInterface` instance
### Queue Items
Queue Items should implement the `QueueItemInterface`. This can be helped via the `QueueItemTrait`.
Queue items can be identified with a `queue_id`. (The same `queue_id` used by the queue manager).
Items can be processed with `process($callback, $successCallback, $failureCallback)`.
The queue item properties are:
* `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:
* `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
## Resources
* [Contributing](https://github.com/charcoalphp/.github/blob/main/CONTRIBUTING.md)
* [Report issues](https://github.com/charcoalphp/charcoal/issues) and
[send pull requests](https://github.com/charcoalphp/charcoal/pulls)
in the [main Charcoal repository](https://github.com/charcoalphp/charcoal)