Background queue processing - publish tasks and process with workers, simplified.
- Sending APNS push notifications (Legacy API)
- Sending FCM push notifications to Android (GCM/FCM)
- Sending AWS SNS push notifications via AWS SNS arn's
- Executing Psr7\Request asynchronously via Guzzle
- Executing any processes with symfony/process
- Long delay scheduling via DynamoSQS Adapter and Serialized worker, for reliable long-term scheduled jobs
- Extendable - write your own worker and use existing adapters out of the box ...
#composer self-update && composer clear-cache && composer diagnose
composer require sshilko/backq:^3.0
#launch local redis
docker run -d --name=example-backq-redis --network=host redis
#install library in any folder for testing
mkdir /tmp/example && cd /tmp/example
composer require sshilko/backq:^3.0
#post job to queue (schedule)
cd vendor/sshilko/backq/example/publishers/process && php redis.php && cd /tmp/example
#[debug] connect
#[debug] _connect
#[debug] putTask
#[debug] putTask is connected and ready to: write
#[debug] putTask pushed task without delay xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo
#[debug] putTask return 'xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo'
#Published process message via redis adapter as ID=xoOgPKcS9bIDVXSaLYH9aLB22gzzptRo
#fetch job from queue (work)
cd vendor/sshilko/backq/example/workers/process && php redis.php && cd /tmp/example
#[debug] connect
#[debug] _connect
#[debug] pickTask
#[debug] pickTask blocking for 5 seconds until get a job
#[debug] pickTask reserved a job nOgykJV81g969yw2wRMF94V9KiIeKN4P
#[debug] afterWorkSuccess
#[debug] afterWorkSuccess currently 1 reserved job(s)
#[debug] afterWorkSuccess releasing completed nOgykJV81g969yw2wRMF94V9KiIeKN4P job
#[debug] Disconnecting
#[debug] Disconnecting, previously connected
#[debug] Disconnecting, state detected
#[debug] Disconnecting, state detected, queue is connected
#[debug] Disconnecting, state 0 jobs reserved and not finalized
#[debug] Disconnecting, state detected, disconnecting queue manager
#[debug] Disconnecting, successful
#verify job executed (example process worker does echo $( date +%s ) >> /tmp/test)
cat /tmp/test
docker stop example-backq-redis
Workers compatibility with adapters
Adapter / Worker | FCM | APNS | Process | Guzzle | Serialized | AWS SNS | Closure |
---|---|---|---|---|---|---|---|
Beanstalkd | + | + | + | + | + | + | + |
Redis | + | + | + | + | ? | + | + |
NSQ | + | + | + | + | ? | + | ? |
DynamoSQS | + | + | + | + | + | ? | + |
Adapter implemented features
Adapter / Feature | ping | hasWorkers | setWorkTimeout |
---|---|---|---|
Beanstalkd | + | + | + |
Redis | + | - | + |
NSQ | + | - | * |
DynamoSQS | - | - | + |
Worker available features
setRestartThreshold
(limit max number of jobs cycles, then terminate)setIdleTimeout
(limit max idle time, then terminating)
TLDR
See /example folder for usage examples
Blog post about sending Apple push notifications
MIT
Copyright 2013-2022 Sergei Shilko Copyright 2016-2019 Carolina Alarcon