Weave 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

Laravel Trackable Jobs Laravel Package

mateusjunges/laravel-trackable-jobs

Track Laravel queued jobs in the database: see when a job is queued, running, finished, or failed, monitor progress and output, and query job status from your app. A simple trait-based package for adding job tracking to any queueable job.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Laravel-native package: auto-discovered service provider, publishable config (trackable-jobs.php) and migration creating a tracked_jobs table. It hooks into Laravel's queue lifecycle events rather than replacing the queue driver, so it layers onto existing redis/sqs/database setups without re-architecting dispatch or worker topology.
  • Two adoption modes: opt-in per job via a Trackable trait, or global tracking of all jobs via config. That maps cleanly to a phased rollout and to selectively instrumenting business-critical queues first.
  • Scope is deliberately narrow — it is a persistence layer for job state, not an observability product. There is no UI, alerting, or metrics emission. Any dashboarding, SLA reporting, or paging still has to be built on top (custom queries, Grafana/Metabase on the tracked_jobs table, or correlation with Horizon/Telescope).

Integration feasibility

  • Low integration cost. Typical effort: composer require, publish config + migration, run migration, add trait to target jobs. A mid-level Laravel engineer can ship a proof-of-concept in under a day.
  • No changes to job payload shape or dispatch sites, which keeps the blast radius small and the change reviewable.
  • Requires a working DB connection from worker processes — worth confirming in environments where workers are network-isolated from the primary database.

Technical risk

  • Write amplification is the dominant risk. Each tracked job generates multiple inserts/updates (queued → running → finished/failed, plus per-attempt rows). At high queue throughput this turns the tracking table into a write hotspot on the primary DB. This must be load-tested against peak job volume before broad enablement.
  • Failure semantics are unverified. Does a failed tracking write abort or fail the underlying job? For critical queues this determines whether the package is a safety net or a new failure domain.
  • Payload/PII exposure. Storing serialized job payloads and exception traces in a queryable table creates a GDPR/data-retention surface that security and legal will want to review.
  • Adoption signal is weak. 316 stars and 0 dependents indicate a niche, effectively single-maintainer project. Bus factor is 1; the MIT license and small surface area mitigate this (forkable, ~trivially replaceable), but it will not carry enterprise support expectations.
  • Orphaned state. Workers killed mid-job (SIGKILL, OOM, deploy rollouts) will leave rows stuck in a "running" state with no reconciliation mechanism — dashboards will silently misreport unless you build a staleness sweep.

Key questions

  1. What is peak and average jobs/minute per queue, and what does that translate to in rows/day?
  2. Does a tracking write failure fail or delay the job?
  3. Coverage: chained jobs, batches, retries/attempts, sync driver, queued closures, horizon supervisors?
  4. What is the retention/pruning story, and is pruning wired to the scheduler out of the box?
  5. How is tenant/queue/connection isolation handled in a multi-tenant or multi-queue deployment?
  6. Who owns the dashboards and alerting built on top, and what is the build cost?
  7. Is there a fork-and-maintain contingency if upstream goes dormant?

Integration Approach

Stack fit

  • Assumes a conventional Laravel app (Laravel 9–11, PHP 8.1+) with standard queue workers. It is a poor fit only where workers cannot reach the relational DB, or where queue throughput is high enough that per-job DB writes are structurally unacceptable.
  • Complements rather than replaces existing tooling: Horizon/Telescope for live inspection, this package for durable, queryable history and business-facing job status.

Migration path

  • Purely additive: one new table, one config file, one trait. No schema changes to existing tables, no payload changes, no dispatch-site changes.
  • Rollback is clean — remove the trait/config and drop the table. This makes it a low-regret decision and argues for a time-boxed pilot rather than a prolonged evaluation.
  • For codebases with many job classes, prefer global tracking in staging to measure volume, then narrow to explicit trait usage in production for cost control.

Compatibility

  • Verify against your exact Laravel/PHP matrix and queue driver; database-driver queues on the same DB connection are the most likely contention case.
  • Confirm interaction with any existing queue middleware, job wrappers, or base job classes — a shared abstract Job class is the natural single insertion point for the trait and simplifies rollout enormously.

Sequencing

  1. Week 1 — Pilot: install in staging, enable global tracking, run the real job mix for a representative period, capture row growth and query latency on the primary DB.
  2. Week 1 — Risk gates: confirm tracking-write failure semantics; security review of stored payloads; agree retention window.
  3. Week 2 — Production shadow: enable on a single non-critical queue. Add pruning to the scheduler from day one.
  4. Week 2–3 — Critical queues: enable on business-critical jobs; stand up staleness reconciliation and a minimal dashboard (success rate, p95 duration, failure reasons).
  5. Week 3+ — Decide: either broaden to all queues with sampling, or scope back to critical-path jobs only, based on measured write cost.

Operational Impact

Maintenance

  • Low ongoing maintenance but non-zero ownership: dependency version bumps on Laravel major releases, table growth management, and index tuning as volume grows. Budget a small recurring slice of platform-team capacity, plus an explicit fork contingency given the single-maintainer profile.
  • Pruning is the one operational task that will bite if skipped — treat it as a launch blocker, not a follow-up.

Support

  • Community-only support via GitHub issues; no SLA, no vendor escalation. Acceptable for internal observability, not acceptable as a dependency of a customer-facing SLA path without an internal owner and fork readiness.

Scaling

  • Scaling is bounded by the database, not by the package. Row volume ≈ job executions × state transitions × retention window. Indexes on status, job class, and timestamps are essential; at very high volume, plan for partitioning or a separate tracking database/connection.
  • Sampling or allowlisting job classes is the primary lever if write cost becomes material.

Failure modes

  • Tracking-table write contention slowing workers on high-throughput queues.
  • Silent drift: stale "running" rows after worker kills, retries creating duplicate attempt records, clock skew across workers.
  • Lost visibility during DB incidents — precisely when you most want job state, which argues for not co-locating tracking with the primary database in high-volume deployments.
  • Data exposure via retained payloads and exception traces if retention and access controls are not defined.
  • Upstream abandonment leaving you on an unpatched dependency.

Ramp-up

  • Developer ramp-up: minimal (hours) — the trait-plus-config model is idiomatic Laravel and self-documenting.
  • Organizational ramp-up: moderate — the real work is agreeing on retention, PII handling, dashboard ownership, and alert thresholds. Budget more time for the governance conversation than for the technical integration.
  • Net TPM position: adopt as a low-cost, reversible pilot on critical queues; the integration risk is small, but treat the tracking table as production infrastructure requiring capacity planning, retention policy, and a named owner before scaling beyond a pilot.
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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log