我最近设置了一个Laravel Queue系统.基础是cronjob调用一个命令,它将作业添加到队列中并调用第二个发送电子邮件的命令.
当我进入我的服务器并运行php artisan队列时,系统工作:listen,但是如果我关闭我的终端,则监听器关闭,作业堆叠起来并排队,直到我重新进入并再次运行监听.
什么是让我的队列系统在后台运行而不需要通过ssh保持我的连接打开的最佳方法?
我尝试运行php artisan queue:work --daemon,它完成了队列中的作业,但当我关闭终端时,它关闭了连接和后台进程.
我正在尝试使用 Laravel 8 在后台运行一个耗时的脚本,但无法完全让它工作。我尝试按照此处的文档https://laravel.com/docs/8.x/queues结合此处找到的教程: https: //learn2torials.com/a/how-to-create-background-job -in-laravel
\n根据文档,我应该运行以下命令来制定 Laravel 中的队列/作业策略
\nphp artisan queue:table\nphp artisan migrate\nRun Code Online (Sandbox Code Playgroud)\n然后我们应该使用以下命令创建我们的作业
\nphp artisan make:job TestJob\nRun Code Online (Sandbox Code Playgroud)\n这App\\Jobs\\是我们新创建的作业文件:TestJob.php
再次遵循文档,我应该将耗时的脚本/代码handle()放入TestJob.php. 我在中编写了以下代码handle()为了测试目的,
public function handle()\n{\n //Do some time-consuming stuff\n sleep(30);\n}\nRun Code Online (Sandbox Code Playgroud)\n接下来,根据文档,我们应该在应用程序中的任何位置使用以下代码行来调度我们的作业TestJob::dispatch(),因此出于测试目的,我将这一行直接放入我们的路由文件中,如下所示:
Route::get(\'/\', function () {\n //Run this job in the background and continue\n \\App\\Jobs\\TestJob::dispatch();\n //After job is started/Queued return view\n return view(\'welcome\');\n});\nRun Code Online (Sandbox Code Playgroud)\n正如我从文档中了解到的那样,应该是这样,但它没有按我的预期工作。中的代码handle()被执行,但return …