Why Queues Exist

PHP answers each request in one process, so anything slow or unreliable inside it (SMTP, PDF rendering, a third-party API) adds its full latency to the page and turns its outages into your 500 errors. A queue splits the work: the request dispatches a small serialized description of the job into a store and returns, and a long-running worker pulls jobs out and runs them.

A job's path from the web request to a worker and, on repeated failure, to failed_jobs
A job's path from the web request to a worker and, on repeated failure, to failed_jobs

Queue mail (Testing Mail), invoices, image resizing, flaky APIs, rebuilds and reports; keep validation and the write the user waits to see in the request. The price is a second process to supervise and restart on every deploy, and work that is done only eventually.