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

tah*_*eer 11 php queue jobs multithreading laravel

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

关键是,它总是通过像'crone'任务一样运行来消耗我的一些资源和内存.我只想在触发推送通知时创建一个新进程,它应该在添加后立即开始执行,之后应该关闭该进程.另一方面,在laravel作业中,我总是需要运行一个我想避免的后台进程,而且我正在使用共享主机,它不允许我在我的服务器上安装"supervisor"来监视我的作业执行.

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

tah*_*eer 14

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

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

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

  • 如果您要在生产环境中运行应用程序,请不要使用数据库,最好使用 beanstalkd 或类似的东西,因为在快速写入/读取时,数据库并不是完全安全的写入/读取 (3认同)
  • Redis是最好的选择之一,而不是数据库。 (2认同)