Why cron alone fails
php artisan queue:work is a long-running loop. Cron starts a process and exits — so every minute you spawn a new worker that dies with the cron job, or you pile zombies. You need something that stays up and babysits PHP.
[!CHECKPOINT] Confirm the failure mode Run
php artisan queue:workin an SSH session, disconnect, and confirm the worker dies. That pain is the requirement.