vandersangen/project-template-bundle
A PHP project template bundle that provides a reusable starting scaffold for new applications, bundling common structure and configuration to speed up setup. Minimal adoption and limited documentation make it best suited for experimentation.
This is a 0.x package, so treat the public API as unstable and pin the version ("vandersangen/project-template-bundle": "0.8.16") until you've validated an upgrade.
composer require vandersangen/project-template-bundle:0.8.16
php artisan vendor:publish --provider="Vandersangen\\ProjectTemplateBundle\\ProjectTemplateBundleServiceProvider"
RunCronMessage class and the queue_job_logs migration to understand the wire format and schema.php artisan migrate and confirm the queue_job_logs table exists with run_id, status, output, and timestamp columns.RunCronMessage for a trivial command, keep a worker running (php artisan queue:work), and watch the row appear with status queued, flip to running, and accumulate live output. The runId you pass at dispatch time is your correlation key for the whole lifecycle.The 0.8.16 release is the one that makes this workflow observable: cron output is written live into queue_job_logs, jobs are created with status queued, and runId is carried on RunCronMessage so you can trace a dispatch through to its output.
runId. Generate a UUID in your calling code (controller, scheduler, UI action) and pass it into RunCronMessage. Store that runId in your own domain table so you can join application records to queue logs later.RunCronMessage; avoid hand-rolling ->everyMinute() closures that bypass the package's logging.queued → running → completed|failed. Treat queued as "accepted but no worker has picked it up" and use it to alert on stalled workers rather than as a success signal.runId from a dashboard, or hook Eloquent model events on the log model and broadcast updates. For CLI debugging, query the row directly:
DB::table('queue_job_logs')->where('run_id', $runId)->value('output');
->onQueue('crons')) with its own worker so long-running cron output doesn't starve interactive jobs.queue_job_logs older than N days, indexed by run_id and status.queued never moving almost always means no worker on the right connection/queue. Check php artisan queue:failed and the queue connection in config before debugging the package.--no-ansi, flush after writes, or a PTY-based runner) — PHP's output buffering will otherwise hold everything until completion.runId collisions and retries. If a job is retried, verify whether the same runId produces a second log row or appends. Deduplicate on (run_id, attempt) in your queries until the behavior is documented.RunCronMessage is serialized onto the queue; keep the payload to identifiers and cron metadata, not large argument blobs.--pretend first; the queue_job_logs table name is generic and may collide with an existing table.run_id and status immediately, and cap output length in the command implementation.config('app.timezone'); confirm this matches the schedule you intend, especially across DST boundaries.RunCronMessage's constructor signature changed in this release with the addition of runId, so any custom dispatchers need auditing.How can I help you explore Laravel packages today?