Mic*_*nDK 4 php background-process laravel laravel-8
我正在尝试使用 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 view(\'welcome\');在作业完成后执行。
我期望执行脚本,并在后台运行时执行下一行代码。如何让它在后台运行,以便用户不必等待脚本完成?
\n我已经用谷歌搜索了很多,根据前面链接的教程,我应该有以下行:QUEUE_DRIVER=database\xe2\x80\x8b在我的 .env 文件中。我已经坐了这个,并且还在 Config\\queue.php 中使用了以下行:\'default\' => env(\'QUEUE_CONNECTION\', \'database\'),,但结果仍然相同
我还在 SO(链接)上找到了 Laravel 5 的以下解决方案,其中建议我们还应该运行以下代码以使其正常工作:php artisan queue:listen,但结果又相同
任何帮助将非常感激!
\n| 归档时间: |
|
| 查看次数: |
12605 次 |
| 最近记录: |