Задания Lumen не отправляются - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над версией lumen 5.4. Я работаю над выполнением такой задачи, как (отправка электронной почты) всякий раз, когда обновляется статус модели. Я вызвал событие в наблюдателе модели, а слушатель отправил очередь. Но проблема, с которой я столкнулся, заключается в следующем: модель обновляется нормально, но задание не отправляется все время. Он отправляется только когда-нибудь. Я зарегистрировал каждый шаг и решил, что иногда дескриптор задания не вызывается. У меня php очередь ремесленников: звонят на работу и большинство вакансий. Драйвер очереди - это база данных.

Вот несколько фрагментов кода:

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");

   }
}
...