Очередь Laravel не читает обновления из Kernel.php - PullRequest
0 голосов
/ 18 января 2019

Фон

У меня есть проект laravel, который работает нормально уже несколько недель и выполняет запланированное задание каждые 5 минут без проблем. Я вижу, как эта работа выполняется в Horizon, и если я использую php artisan queue:work --tries=3, я также вижу, как она выполняется. К вашему сведению - я использую Redis для драйвера очереди.

Рабочий Kernel.php

namespace App\Console;

use Artisan;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Jobs\FetchMajorProblems;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
        'App\Console\Commands\MassAssignRole',
        'App\Console\Commands\ClearLogs',
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {

       $schedule->command('horizon:snapshot')->everyFiveMinutes();

       $schedule->job(new FetchMajorProblems)->everyFiveMinutes();

    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

Выпуск

Теперь я создал новую работу точно так же, как и для FetchMajorProblems. Я также добавил это в файл Kernel.php с помощью следующих 2 изменений:

  • Добавлено use App\Jobs\FetchMajorIncidents; в начало.
  • Добавлено $schedule->job(new FetchMajorIncidents)->everyFiveMinutes(); к функции расписания.

Однако новое задание FetchMajorIncidents не вызывается.

Что я пробовал

Я пробовал следующее:

  • Перезапущенный горизонт
  • Перезапустил сервер
  • Очистил кэш php
  • Очистил конфиг php
  • Очищены просмотры php
  • Запуск автозагрузки Composer

В качестве теста я также пытался удалить текущее задание, комментируя $schedule->job(new FetchMajorProblems)->everyFiveMinutes();. Проблема в том, что, хотя это закомментировано, задание все еще выполняется каждые 5 минут!

Я не могу придумать ничего другого, чтобы проверить, где могут кэшироваться задания.

...