我无法在 laravel 中发送延迟的作业
I can't dispatch delayed job in laravel
下面的代码不起作用。我想我已经把所有事情都做对了,但不知何故我没有工作。
...
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
...
config/queue.php
...
'default' => env('QUEUE_CONNECTION', 'sync'),
...
请帮助我。任何建议都会很好。谢谢。
诊断步骤;
打开 tinker 和 运行 config('queue')
并检查队列设置是否符合预期
在没有 运行 队列工作者的情况下,将您的作业分派到队列中。打开您的数据库工具并检查作业 table 是否包含一条新记录。
运行 queue worker php artisan queue:work
延迟后,job 应该 运行.
检查作业是否已从作业 table 中删除,并且 failed_jobs table.
中没有任何内容
下面的代码不起作用。我想我已经把所有事情都做对了,但不知何故我没有工作。
... 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
...
config/queue.php ...
'default' => env('QUEUE_CONNECTION', 'sync'),
...
请帮助我。任何建议都会很好。谢谢。
诊断步骤;
打开 tinker 和 运行
config('queue')
并检查队列设置是否符合预期在没有 运行 队列工作者的情况下,将您的作业分派到队列中。打开您的数据库工具并检查作业 table 是否包含一条新记录。
运行 queue worker
php artisan queue:work
延迟后,job 应该 运行.检查作业是否已从作业 table 中删除,并且 failed_jobs table.
中没有任何内容