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

2022-08-30 19:56:48

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

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

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


答案 1

经过一些研究,我决定和司机一起去。还有其他一些不错的选择,但选择将取决于您的系统工作负载。database

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

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


答案 2

队列同步现在与 http 请求或线程在同一线程中运行。Deamon不运行,我会在本地测试中使用同步队列,哟使用dd(),显示所有数据到屏幕


推荐