经过数小时的调试,我终于找到了问题的解决方案。将
我正在创建一个生成视频的应用程序。这是一个相当密集的函数,需要几分钟的时间才能生成。所以我想为此创建一个异步进程。经过一些研究,我读到了关于拉拉威尔的工作和排队的文章。
但现在我的作业没有被插入到jobs
表中。我找不出我做错了什么。
启动作业的我的功能:
public function generate() {
$id = Auth::user()->id;
GenerateJob::dispatch($id);
}
我的工作
<?php
namespace AppJobs;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;
use Auth;
class GenerateJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct($dossierId)
{
$this->dossierId = $dossierId;
}
public function handle()
{
sleep(5);
}
}
。ENVQUEUE_DRIVER=database
我确实运行了php artisan clear:config
,但似乎没有任何帮助。
我所尝试的似乎都不起作用。jobs
表保持为空,并且作业是同步执行的,而不是异步执行的。我在这里错过了什么?
->onConnection('database');
添加到GenerateJob::dispatch($dossier_id);
解决了所有问题。。
我希望我能说出为什么这是必要的,但我不知道,因为我已经把它放在了我的.env文件中。希望这对其他处于这种情况的人有所帮助。:-(