После того, как b̶a̶n̶g̶i̶n̶g̶ ̶m̶y̶ ̶h̶a̶d̶ ̶a̶g̶a̶i̶n̶s̶t̶ ̶m̶y̶ ̶d̶e̶s̶k̶ выполнил много отладок, я обнаружил причины, по которым мой код не запускался, хотя был запущен cron. Как я и думал, это была не проблема crontab, а проблема с разрешениями, о которой не сообщалось в журналах. На протяжении всей моей запланированной функции я разбрасывал различные вызовы Log::info
:
Log::info('--------------------------------------------------------------------------');
Log::info('--------------------- Cron Fired: ' . date('Y-m-d H:i:s') . ' --------------------');
Log::info('--------------------------------------------------------------------------');
и кажется, что они были причиной проблемы. Я пришел к такому заключению, что закомментировал все вызовы Log::info
и создал небольшую таблицу с именем cron
, в которой было два столбца; log
и created_at
, затем я поместил следующий фрагмент в функцию, которая запускалась каждую минуту:
DB::table('cron')->insert(['log' => 'Scheduler found ' . $rows->count() . ' rows that need to be checked']);
и он последовательно создавал строки каждую минуту, в отличие от того, когда я использовал Log::info
.
Что еще более усложнило мою проблему, так это то, что когда я запускал расписание вручную, я выполнял следующую команду:
sudo php artisan schedule:run
и проблема с разрешениями больше не была проблемой из-за sudo
, что, следовательно, увеличило время отладки.