Background Jobs
Keel includes a database-backed queue with jobs and failed_jobs tables.
Queue API
Queue::push(
SendOrganizationInviteJob::class,
['to_email' => $email, 'subject' => 'Invite'],
'default',
0
);
Queue::push() writes to jobs with available_at using SQL DATE_ADD(NOW(), INTERVAL ... SECOND).
Worker CLI
# one drain pass (cron style)
php database/queue-work.php --once
# long-running worker
php database/queue-work.php
- Script is CLI-only and loads env before processing.
- Jobs are reserved with
FOR UPDATEtransaction locks. - Failures are retried with backoff; at 5 attempts they move to
failed_jobs.
Deployment patterns
- Cron: run
php database/queue-work.php --onceevery minute. - Supervisor/systemd: keep
php database/queue-work.phprunning continuously.