У меня проблема с запуском планировщика Laravel для отправки писем в очереди
Настройка следующая: Laravel 5.7
Я настроил планировщик (App / Console / Kernel.php), как указано ниже
protected function schedule(Schedule $schedule)
{
$schedule->command('queue:work --tries=3')->everyFiveMinutes()->withoutOverlapping();
}
БД настроен в соответствии с документами Laravel. Как только я нажимаю на ссылку в моем пользовательском интерфейсе, я вижу запись в БД.
.Env QUEUE_CONNECTION = база данных и тот же параметр в Config / queue.php
(если я изменяю базу данных для синхронизации, она работает отлично)
Моя работа cron на сервере выглядит следующим образом (я просто попытался войти в cron)
/usr/local/bin/php /home/XXX/YYY/artisan schedule:run 1>> /home/XXX/public_html/junk/cron_log.php 2>&1
Я вижу, как журналы cron обновляются каждые пять минут, но
«Запланированные команды не готовы к запуску»
Точно такой же код и настройки прошлой ночью сработали (перед сном). Я проверил более
40 попыток отправки emais и записи в БД были удалены. Я только пытался сохранить планировщик с помощью EveryFiveMinues (), но теперь он не работает.
Я могу понять, что письма приходят медленно, но почему записи в БД не были удалены, как прошлой ночью?
Это может быть полезно для других, кто использует Laravel 5.7, совместно используемый Godaddy.
Вышеуказанная проблема с отправкой заданий электронной почты не выполнялась (я имею в виду, что задания cron запущены, но записи в базе данных не очищены.
->withoutOverlapping();
После того, как я удалил этот метод, я теперь правильно вижу записи в cron_log и также получаю письма. Мои записи cron_log как показано ниже
Running scheduled command: '/opt/alt/php71/usr/bin/php' 'artisan' queue:work --tries=3 > '/dev/null' 2>&1
Я предполагаю, что метод безOverlapping () имеет проблемы при выполнении cron. Я ничего не изменил в коде.
Других решений пока нет …