kamisama/php-resque-ex-scheduler
A PHP port of Resque's scheduler that queues delayed background jobs for later execution. This extended fork adds scheduling support to php-resque, letting you enqueue jobs to run at a future time and keep Redis-backed workers processing them.
Architecture fit: This is not a Laravel-native package and does not integrate with Laravel’s queue, scheduler, events, or service container out of the box. It is a sidecar scheduler for php-resque-ex, storing delayed and recurring jobs in Redis and enqueuing them to Resque queues. It fits only when the application already runs php-resque-ex workers and needs a transitional scheduler. For a Laravel application using database/Redis/SQS queues and Laravel Scheduler, it is an architectural mismatch.
Integration feasibility: Feasible only with a compatibility audit. Adoption would require php-resque-ex, a compatible Redis client, job classes, queue naming conventions, and a long-running process under Supervisor/systemd. There is no Laravel service provider, configuration wrapper, health endpoint, or first-class observability. A TPM should treat integration as a small platform project, not a Composer-only change.
Technical risk: High. The package is archived, last released in 2015, has a small community, and an unknown repository location. It is likely PHP 5-era and may conflict with modern PHP 8+, Laravel, and dependency constraints. Security patching, Redis compatibility, timezone/DST behavior, duplicate enqueue prevention, and scheduler HA are unresolved until proven. MIT licensing permits a fork, but forking transfers maintenance ownership to the team.
Key questions: Does the team already operate php-resque-ex in production? Which PHP, Redis, and php-resque-ex versions are required? How are recurring schedules timezone-aware? Is there locking or leader election to prevent duplicate scheduler processes? What happens to missed jobs after downtime? Are jobs idempotent? Who owns a fork if upstream is unavailable? What is the exit plan to Laravel Scheduler or a maintained queue system?
Stack fit: Use only as a legacy bridge where php-resque-ex is already the job runtime. Do not introduce it into a greenfield Laravel stack; Laravel Scheduler plus Redis/database queues, or a maintained scheduler, is the lower-risk fit. If adopted, isolate it as infrastructure rather than embedding it in application code.
Migration path: Inventory existing php-resque-ex jobs, queues, schedules, and Redis keys. Pin the package and all transitive dependencies in a dedicated container. Run the scheduler in parallel with existing scheduling, shadow scheduled outputs, compare enqueue behavior, then cut over queue-by-queue. Keep a documented rollback and a decommission plan before production adoption.
Compatibility: Validate PHP runtime compatibility, Redis client behavior, php-resque-ex job class autoloading, queue names, process-manager configuration, and timezone handling. Confirm whether delayed timestamps are Unix timestamps or date strings, and whether cron expressions match operational expectations across DST boundaries.
Sequencing: First complete a dependency and security audit. Second, build a proof of concept with representative one-off and recurring jobs. Third, add process supervision, structured logging, heartbeat monitoring, and Redis backup/restore. Fourth, run in parallel and gate production on missed-job, duplicate-job, and restart tests. Fifth, assign a fork owner and a replacement roadmap; stop if PHP compatibility or HA requirements cannot be met.
Maintenance: High relative to value. An archived dependency requires the team to own patching, PHP upgrades, Redis compatibility, and bug fixes. Budget for a fork and periodic dependency review, or avoid adoption entirely.
Support: Community-only and effectively self-supported. There is no vendor SLA, active release stream, or guaranteed security response. TPM should require an internal owner, runbook, escalation path, and explicit acceptance of the maintenance burden.
Scaling: Worker capacity can scale horizontally, but the scheduler itself is a long-running polling process and a likely single point of failure. HA requires external locking or leader election to avoid duplicate scheduling. Redis sizing, queue depth, poll interval, and schedule volume must be load-tested.
Failure modes: Scheduler downtime causes missed or late jobs; restart can duplicate enqueues without idempotency; Redis outage blocks scheduling; clock skew and DST changes can shift recurring jobs; long-running processes can leak memory; queue backlog can hide scheduler failure; and sparse observability can make failures silent. Monitor scheduler heartbeat, overdue schedules, enqueue counts, Redis latency, and queue depth.
Ramp-up: Moderate for teams already familiar with Resque and Redis, but steep for Laravel-only teams because the operational model is external to Laravel. Documentation is sparse, so ramp-up depends on code reading, proof-of-concept testing, and runbook creation. TPM recommendation: reject for new platforms; permit only as a time-boxed legacy bridge with a funded fork, monitoring, and a dated exit plan.
How can I help you explore Laravel packages today?