libriciel / cakephp-beanstalk
Permet d'utiliser beanstalk pour lancer des background processes.
Package info
gitlab.adullact.net/Libriciel/archivage/cakephp-beanstalk.git
Type:cakephp-plugin
pkg:composer/libriciel/cakephp-beanstalk
Requires
- php: ^7.4 || ^8.1
- ext-intl: *
- ext-json: *
- ext-pdo: *
- ext-sockets: *
- ext-zmq: *
- cakephp/cakephp: ^4.1
- cakephp/migrations: ^3.0
- libriciel/cakephp-state-machine: ^3.1 || dev-master
- pda/pheanstalk: ~3.1
- react/http: ^1.8
- react/socket: ^1.12
- robmorgan/phinx: 0.13.4
Requires (Dev)
- cakephp/bake: ^2.0
- phpunit/phpunit: ^9.5.24
- psy/psysh: ^0.10.4
Suggests
- cakephp/migrations: Pour une installation via le plugin migration (voir config/Migrations/)
Provides
None
Conflicts
None
Replaces
None
- dev-master
- 4.1.1
- 4.1.0
- v4.0.x-dev
- 4.0.0
- v3.2.x-dev
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.10
- 3.0.2
- 3.0.1
- 3.0.0
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-php83
- dev-renovate-cakephp-migrations-4.x
- dev-renovate-cakephp-bake-3.x
- dev-renovate-robmorgan-phinx-0.x
- dev-renovate-psy-psysh-0.x
- dev-3.0.x-php-8.1-compat
- dev-detached
This package is auto-updated.
Last update: 2026-10-29 13:25:57 UTC
README
Plugin CakePHP 4 de file de jobs : émission de jobs, serveur de notification et workers, avec suivi des jobs et des workers en base de données.
Dépendance de
| Projet | Build | Coverage |
|---|---|---|
| asalae | ||
| versae | ||
| asalae-core |
Dépendances
| Projet | Build | Coverage |
|---|---|---|
| cakephp-state-machine |
Prérequis
- PHP
^7.4 || ^8.1avec les extensionsintl,json,pcntl,pdo,sockets,zmq(paquetphp-zmq) - Base de données pour les tables
beanstalk_jobsetbeanstalk_workers(SQL PostgreSQL fourni, ou migrations du plugin) - Le serveur de file d'attente est fourni par le plugin (
bin/cake beanstalk_server) : pas de démon beanstalkd à installer
Installation
composer require libriciel/cakephp-beanstalk:dev-master
Dans Application::bootstrap() :
$this->addPlugin('Beanstalk');
Tables beanstalk_jobs et beanstalk_workers : SQL PostgreSQL fourni dans config/schema/beanstalk.sql, ou migrations du plugin :
bin/cake migrations migrate --plugin Beanstalk
Configuration (clé Beanstalk) :
client_host,client_port: adresse du serveur, utilisée pour émettre les jobsserver_host,server_port: écoute du serveur (beanstalk_server)workers: workers lancés et surveillés par le serveur (classname,run,kill,quantity,active)table_jobs,table_workers: tables utilisées (par défautBeanstalk.BeanstalkJobsetBeanstalk.BeanstalkWorkers)
config/app_default.php (asalae)
'client_host' => 'localhost',
'client_port' => 11300,
'server_host' => '0.0.0.0',
'server_port' => 11300,
// ...
'workers' => [
'analyse' => [
'classname' => \Asalae\Worker\AnalyseWorker::class,
'run' => 'bin/cake worker analyse',
'kill' => 'kill {{pid}}',
'quantity' => 1,
'active' => true,
],
Utilisation
Les jobs sont enregistrés en base de données ; le serveur beanstalk_server (remplace le service beanstalkd) notifie les workers et lance ceux définis dans la configuration.
Command
beanstalk_server [--datasource] [--log]: serveur de jobsbeanstalk_client: envoie un message de test au serveurworker <nom>: lance un worker (--tube,--one-job,--unique,--keep-alive,--log-file…)job list,job view,job edit,job pause,job resume,job resume_all,job delete,job delete_all,job check: gestion des jobs
docker-compose.yml (asalae)
command: php /var/www/asalae/bin/cake.php beanstalk_server --log /var/www/asalae/logs/beanstalk.log
Utility
Beanstalk\Utility\Beanstalk : émission de jobs sur un tube (setTube(), emit(), emitMany()).
src/Model/Table/MailsTable.php (asalae)
$Beanstalk = Utility::get('Beanstalk');
$Beanstalk->setTube('mail');
$Beanstalk->emit(
['mail_id' => $entity->id, 'user_id' => $user_id],
PheanstalkInterface::DEFAULT_PRIORITY,
$this->getConnection()->inTransaction() ? 10
: PheanstalkInterface::DEFAULT_DELAY
);
Worker
Un worker implémente Beanstalk\Command\WorkerInterface (work(), beforeWork(), afterWork()…) ; Beanstalk\Command\AbstractWorker fournit la boucle de traitement des jobs. Beanstalk\Worker\TestWorker sert aux tests de bon fonctionnement.
src/Worker/AnalyseWorker.php (asalae)
class AnalyseWorker extends AbstractAsalaeWorkerV4 implements WorkerInterface
{
const TUBE = 'analyse';
// ...
public function work($data)
{
$this->out(__("Analyse du transfert {0}", $data['transfer_id']));
Model
Tables BeanstalkJobs (jobs, état, erreurs) et BeanstalkWorkers (workers lancés).
Tests
vendor/bin/phpunit