laravel 队列 - 同步驱动程序如何工作?它是在单独的 process/thread 中执行还是在主执行线程中执行?

laravel queues - how sync driver works? Does it executes in a separate process/thread or the main execution thread?

我正在从我的服务器发送推送通知,并希望它在后台进程中简单地执行。我已阅读 Laravel 文档,并且了解数据库驱动程序和其他一些选项。我已经在我的本地机器上使用数据库驱动程序,但有一件事让我烦恼,我必须启动一个后台线程来侦听使用 php artisan queue:listen --deamon 添加到队列中的作业。

重点是,它总是像 'crone' 任务一样通过 运行ning 消耗我的一些资源和内存。我只想在触发推送通知时创建一个新进程,它应该在添加后立即开始执行,然后关闭该进程。另一方面,对于 laravel 工作,我总是必须 运行 我想避免的后台进程,而且我使用的是共享主机,它不允许我安装 "supervisor"在我的服务器上监控我的工作执行。

谁能解开这个歧义??处理这种情况的更好方法是什么?

经过一些研究,我决定使用 database 驱动程序。还有其他一些不错的选择,但选择取决于您的系统工作负载。

重点是,sync 驱动程序使用主线程来执行任务,这仅在您处于开发阶段时有用。如果您有生产系统,那么您可能需要考虑 运行 您的队列的其他选项。排队长 运行ning 任务的主要思想是能够在某些后台进程中执行它们,这样您的主应用程序线程就不会阻塞,并且您可以更快地满足您的客户端请求。

有关不同驱动程序的更多信息和帮助,请访问 Laravel docs

现在在与 http 请求或线程相同的线程中进行队列同步 运行。守护进程不是 运行,我将在本地测试中使用同步队列,你使用 dd(),将所有数据显示到屏幕