2016-09-22 4 views
2

Я настроенный планировщик для запуска один раз каждую минуту, чтобы выполнить две команды:Laravel команда планировщик никогда не работает 2-й раз

$schedule->command('amazon:read-sqs') 
    ->everyMinute() 
    ->runInBackground() 
    ->withoutOverlapping() 
    ->sendOutputTo(storage_path('logs/cmd/amazon_read_sqs.log'), true) 
    ->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh1'); 

$schedule->command('jobs:dispatcher', ['--max' => 100]) 
    ->everyMinute() 
    ->runInBackground() 
    ->withoutOverlapping() 
    ->sendOutputTo(storage_path('logs/cmd/jobs_dispatcher.log'), true) 
    ->thenPing('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh2'); 

Это было здорово работает в прошлом месяце развития. Однако сразу после настройки нашего сервера для запуска с Envoyer планировщик неожиданно никогда не запускается после первого раза.

Другими словами, если расписание настроено на каждую минуту в Forge, оно запускается один раз, а затем никогда не добавляет журналы.

Я добавил, что сердечный ритм Envoyer отслеживает его каждые 10 минут, но он не вызывает метод thenPing(), чтобы уведомить Envoyer ... даже после этого первого запуска.

Я могу удалить запись cron и воссоздать ее, заставляя ее запускать это один раз.

Все они работают нормально, если им дают свои собственные кроны.

Когда я проверяю любые файлы блокировки /storage/framework/schedule-*, я не нахожу ничего, чтобы удалить их, которые могут быть блокированы.

В архиве журнала Laravel ничего не обнаружено.

Любые идеи?

ответ

1

решаемые, изменив cronjob от php /home/forge/default/artisan schedule:run к php /home/forge/default/current/artisan schedule:run

Это позволило планировщик Laravel для корректной работы. Однако методы thenPing и pingBefore по-прежнему никогда не выполняют свою работу.

Чтобы исправить это, мне пришлось вручную добавить эту строку после каждой команды:

(new Client())->get('http://beats.envoyer.io/heartbeat/SoMeRaNdOmHaSh'); 

Почему встроенные методы звона не работают, остается загадкой. Хотелось бы знать, почему.