【发布时间】:2022-07-19 22:24:06
【问题描述】:
下面的代码不起作用。我认为我已经正确地完成了所有事情,但不知何故我没有工作。
... MyJob::dispatch($job)->onQueue('processing')->delay(Carbon::now()->addSeconds(30)); ...
MyJob.php
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class MyJob implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels, Dispatchable;
public function __construct($job)
{
// I described a logging code here and yes, there was change, but then...
}
public function handle()
{
// I described a logging code here, but there wasn't change
}
}
问题是 dispatchNow() 确实起作用了,但是延迟调度不起作用。
我也正确设置了 .env(我猜)
.env 文件 ...
QUEUE_CONNECTION=database
...
配置/queue.php ...
'default' => env('QUEUE_CONNECTION', 'sync'),
...
请帮助我。任何建议都会很好。谢谢。
【问题讨论】:
-
您可以尝试通过添加 ->onConnection('database') 在调度中指定连接,但这不是必需的,您可能需要清除缓存或更改回退驱动程序到“数据库”以及您的 queue.php 。另外,在同步调度时,请使用 dispatchSync 方法,因为 dispatchNow 方法已弃用
-
能否分享您的错误日志?
-
感谢您的回复,Mr.Oskar Mikael。我只是尝试过,但也没有任何变化。还有其他方法吗?
-
没有错误日志。它只是行不通。正如我所说的 dispatchNow 方法效果很好,但是带有延迟方法的 dispath 不能正常工作,没有错误。我怎样才能做到这一点?
-
也许这对你有帮助:stackoverflow.com/a/31091730/9636400
标签: laravel delayed-job dispatch