Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Resque Scheduler Laravel Package

david-garcia/php-resque-scheduler

PHP port of resque-scheduler for php-resque, adding delayed job scheduling. Enqueue jobs to run at a future timestamp or after N seconds, compatible with the Ruby resque-scheduler web UI. Recurring/cron-style jobs not yet supported.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Use Case Alignment: The package is a Resque scheduler for PHP/Laravel, enabling delayed job execution via Redis-backed queues. It fits well in architectures requiring asynchronous task scheduling (e.g., cron-like jobs, batch processing, or event-driven workflows).
  • Laravel Compatibility: While not officially Laravel-specific, it integrates with Laravel’s queue system (via Illuminate\Queue) if Resque is used as the queue driver. This requires manual bridging but is feasible.
  • Alternatives: Laravel’s native schedule:run (via laravel/schedule) or spatie/laravel-schedule may offer better long-term support. This package’s niche is Resque-specific scheduling, which is outdated in Laravel’s ecosystem.

Integration Feasibility

  • Resque Dependency: Requires Resque (a Redis-backed queue system) to be already in use. If the stack relies on Laravel’s default queue drivers (database, sync, etc.), this adds significant integration overhead.
  • Redis Requirement: Mandates Redis for both queue and scheduling, which may conflict with existing caching/queue backends.
  • Legacy Codebase Risk: Last updated in 2017, it may not align with modern Laravel (v10+) or PHP (v8.1+) features (e.g., typed properties, constructor property promotion).

Technical Risk

  • Maintenance Burden: No active development; bugs or security issues (e.g., Redis injection) may go unpatched.
  • Testing Overhead: Requires manual testing of scheduled jobs, job retries, and failure handling due to lack of documentation/examples.
  • Conflict with Laravel Ecosystem: May clash with Laravel’s built-in task scheduling or third-party packages like laravel-horizon.
  • Key Questions:
    • Is Resque already in use, or would this require a full queue system migration?
    • What’s the failure recovery strategy for missed/failed scheduled jobs?
    • Are there alternatives (e.g., spatie/laravel-schedule, laravel-horizon) that better fit Laravel’s roadmap?

Integration Approach

Stack Fit

  • Target Stack: Best suited for legacy Laravel apps using Resque (e.g., pre-Laravel 5.5 projects). For modern Laravel, evaluate alternatives first.
  • Dependencies:
    • Redis: Must be configured for both Resque workers and scheduling.
    • Resque PHP: Requires chrisboulton/php-resque (or a maintained fork).
    • Laravel Queue: If using Laravel’s queue system, requires custom job binding to Resque.

Migration Path

  1. Assess Current Queue System:
    • If using database queues, migrating to Resque adds complexity (Redis setup, worker management).
    • If already using Resque, integration is lower-risk but still requires testing.
  2. Implementation Steps:
    • Install the package via Composer (with --ignore-platform-reqs if PHP/Redis versions mismatch).
    • Configure Redis for Resque (see Resque docs).
    • Set up a Resque worker to process scheduled jobs:
      php artisan resque:work QUEUE_NAME
      
    • Bridge Laravel jobs to Resque (e.g., via a custom queue driver or middleware).
  3. Testing:
    • Validate job scheduling, delays, and retries.
    • Test failure scenarios (e.g., Redis downtime, worker crashes).

Compatibility

  • Laravel Versions: Likely compatible with Laravel 5.x but untested on newer versions.
  • PHP Versions: May require PHP 7.1–7.4 (no PHP 8.x support assumed).
  • Redis Compatibility: Assumes Redis 3.x–5.x (check for protocol changes in newer versions).

Sequencing

  1. Phase 1: Proof-of-concept with a non-critical job.
  2. Phase 2: Gradual rollout, monitoring job success/failure rates.
  3. Phase 3: Replace existing cron jobs with scheduled Resque jobs (if applicable).

Operational Impact

Maintenance

  • No Active Development: Bug fixes or security updates must come from the community or internal patches.
  • Documentation Gaps: Lack of usage examples or migration guides increases onboarding time.
  • Dependency Management: Resque and Redis require manual updates and compatibility checks.

Support

  • Debugging Challenges:
    • Resque lacks built-in monitoring (unlike Laravel Horizon).
    • Job failures may require manual inspection of Redis queues.
  • Support Channels: No official support; issues must be raised via GitHub (if the repo remains accessible).

Scaling

  • Horizontal Scaling: Resque workers can be scaled by adding more processes, but scheduling precision depends on Redis performance.
  • Load Testing: Unclear how the scheduler handles high-frequency jobs or spikes in load.
  • Redis Bottlenecks: Poor Redis configuration (e.g., no persistence, high latency) can degrade reliability.

Failure Modes

Failure Scenario Impact Mitigation
Redis downtime Scheduled jobs lost; workers fail. Use Redis sentinel/replication.
Worker process crash Missed jobs; no retries by default. Implement health checks + supervisor (e.g., PM2).
Job execution failure Silent failures if no error handling. Add job failure callbacks (e.g., failed table).
Package incompatibility Breaks on PHP/Laravel updates. Fork and maintain locally.

Ramp-Up

  • Learning Curve: Requires familiarity with Resque, Redis, and Laravel queues.
  • Onboarding Time: Estimated 2–4 weeks for a team new to Resque, including:
    • Redis setup and tuning.
    • Job scheduling/configuration.
    • Debugging and monitoring setup.
  • Training Needs:
    • Resque job lifecycle (enqueueing, retries, failures).
    • Redis command-line tools (redis-cli) for troubleshooting.
    • Laravel queue drivers and job middleware.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor