我正在开发流明版本5.4 每当模型状态更新时,我正在执行类似(发送电子邮件)的任务。 我在模型观察器中调用了事件,并且侦听器调度了队列。但是我面临的问题是:模型可以很好地更新,但工作不会一直派发。它仅在某个时间发送。我已经记录了每个步骤,并发现有时无法调用作业中的句柄。 我正在运行php artisan队列:工作和大多数工作都被称为。队列驱动程序是数据库。
以下是一些代码段:
public function updated( Model $model ) {
$dirty = $model->getDirty();
$keys = array_keys($dirty);
if(in_array('status', $keys)){
event(new ModelStatusUpdate($model));
}
}
<?php
namespace App\Events;
class ModelStatusUpdate
{
public $model;
public function __construct($model)
{
$this->model= $model;
}
}
//In event service provider:
protected $listen = [
'App\Events\ModelStatusUpdate' => [
'App\Listeners\ModelStatusUpdateListener',
],
];
//In listener
public function handle(ModelStatusUpdate $event)
{
try{
$model= $event->model;
dispatch((new CallJob($model)));
}catch (\Exception $exception){
Log::error(json_encode(['error' =>$exception->getMessage(), 'line' => $exception->getLine(), 'file' => $exception->getFile()]));
}
}
class CallJob extends Job
{
public $timeout = 50;
protected $guzzle;
public function __construct($model)
{
$this->model= $model;
Log::info("Inside job constructor");
}
public function handle()
{
Log::info("Inside job handle");
}
}