mcfedr/periodic-queue-driver-bundle
Symfony bundle adding a periodic queue driver so queued jobs run on a fixed schedule through your existing queue. Set intervals per job, let workers pick up due tasks automatically, and avoid separate cron entries for recurring work.
Architecture fit — fundamental mismatch. Despite the framing, this is not a Laravel package. The -bundle suffix and the mcfedr namespace identify it as a Symfony bundle that plugs into mcfedr/queue-manager-bundle, itself a Symfony bundle. It extends that bundle's driver interface and expects Symfony's DI container, bundle registration, and kernel bootstrapping. Laravel's package discovery, service providers, and queue driver contract (Illuminate\Queue\Connectors\ConnectorInterface) are a different abstraction entirely. There is no adapter shim, and writing one means reimplementing the driver against Laravel's Queue contract rather than integrating this package — at which point we are using it as reference reading, not as a dependency.
Integration feasibility — low. A Laravel integration would require either (a) installing Symfony's DI/HttpKernel alongside Laravel to host a bundle, which is architecturally indefensible, or (b) extracting the periodic-scheduling logic — likely a few hundred lines — and porting it. Neither is "integration." Any evaluation should treat this as a pattern to borrow, not a component to install.
Technical risk — high, on every axis.
| Signal | Reading |
|---|---|
| Last release 2017-09-29 | ~8 years unmaintained; targets PHP 5.6/7.0 and Symfony 2/3 |
| 1 star, 0 dependents | No production evidence, no downstream bug reports, no community triage |
| Composer resolution | Modern PHP 8.x / Symfony 6–7 constraint solving will almost certainly fail |
| Security posture | No patching path; any CVE in the transitive Symfony graph is unowned |
| Bus factor | Effectively 1, with no evidence of recent activity |
MIT licensing means we can fork, but forking an abandoned 2017 Symfony bundle into a Laravel codebase transfers the entire maintenance burden to us on day one.
Key questions for the requester:
Schedule::job, Schedule::call) and the latter via its queue contract.schedule:run under cron or Supervisor?Verdict: Do not adopt. Reject at intake and redirect to Laravel's native scheduler plus the queue system, or a maintained scheduler-monitoring package for observability.
Stack fit — none out of the box. Target stack is PHP/Laravel with a queue backend (Redis/SQS/database) and cron or Supervisor for the scheduler process. This package assumes Symfony full-stack conventions. There is no overlap in extension points: Laravel drivers implement Illuminate\Contracts\Queue\Queue; this package implements a Symfony bundle driver interface. Bridging them is a rewrite, not a wrapper.
Migration path. Two honest options:
app/Console/Kernel.php (->everyMinute(), ->withoutOverlapping(), ->onOneServer()) dispatching jobs onto the existing queue. This is a half-day of work, is first-class supported, and inherits Laravel's onOneServer locking, overlap prevention, and failed-job handling for free.Compatibility. Assume broken. PHP 8.1+ will trip on deprecated syntax and typed-property assumptions; Symfony 6/7 removed the bundle-era APIs this depends on. Even a legacy-compatible install would pin the application to an EOL framework branch — a supply-chain liability in a modern Laravel app.
Sequencing.
schedule:list, heartbeat monitoring, alerting on missed runs) and one-server locking.Total cost of the correct path is measured in days. Total cost of the package path is unbounded.
Maintenance. Adopting this package means owning it. There will be no upstream fixes, no PHP 8.x compatibility patches, no Symfony/Laravel version bumps. Every future framework upgrade becomes a manual merge against a 2017 codebase. For a scheduler sitting on the critical path of job execution, that is a recurring tax with no ceiling.
Support. None. No maintainer responsiveness, no issue triage, no security advisories, no vendor escalation. Internal on-call becomes the sole support tier for a component we did not write and cannot easily reason about. The 0 dependents figure is not reassuring — it means nobody has stress-tested this in production and published the failure modes.
Scaling. Periodic drivers have well-known scaling hazards, and this one's documentation is thin enough that we cannot confirm how it handles them: what happens on tick drift, whether a missed tick is replayed or dropped, and whether concurrent workers can double-execute the same period. In a multi-node deployment, absent an explicit distributed lock, periodic jobs duplicate. Laravel's onOneServer() solves this with a documented atomic lock; this driver offers no comparable, verifiable guarantee.
Failure modes to expect.
Ramp-up. Deceptively low, then sharply high. The code volume is small, so an engineer will initially estimate this as easy. The real cost is archaeology: reverse-engineering undocumented 2017 scheduling semantics with no tests, no changelog, and no reference deployments. Expect the estimate to be wrong by a multiple, and expect the resulting implementation to be understood by exactly one person.
Bottom line for the TPM: this is a low-signal artifact from an automated scan, not a viable dependency. The correct decision is to reject it, capture the underlying scheduling requirement, and satisfy it with Laravel's native scheduler — which is supported, observable, and already installed.
How can I help you explore Laravel packages today?