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

时间:2017-04-18 08:51:04

标签: php multithreading laravel queue jobs

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

关键是,它总是通过像“老兄”这样的方式运行来消耗我的一些资源和记忆。任务。我只想在触发推送通知时创建一个新进程,它应该在添加后立即开始执行,之后应该关闭该进程。另一方面,在laravel工作的同时,我总是要运行一个我想避免的后台进程,而且我正在使用一个不允许我安装" supervisor"在我的服务器上监视我的作业执行情况。

任何人都可以清除这种含糊之处吗?处理这种情况的更好方法是什么?

2 个答案:

答案 0 :(得分:10)

经过一番研究,我决定选择database司机。还有一些其他很好的选择,但选择取决于您的系统工作负载。

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

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

答案 1 :(得分:-2)

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