Мне трудно работать cron на Digitalocean. Я заметил, что есть два разных файла cron, я добираюсь до одного, добираясь до /etc/crontab
и другой, введя команду crontab -e
,
Чтобы сделать это более запутанным, оба из них имеют несколько разную «компоновку». Первый:
* * * * * root php /var/www/Laravel artisan schedule:run >> /home/laravel.log
и второй:
* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log
Вот часть планировщика Laravel:
protected $commands = [
'App\Console\Commands\SyncAPIs',
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('media:sync')->everyThirtyMinutes();
// sync for yesterday to eliminate discrepancies
$schedule->command('media:sync ' . Carbon::yesterday())->dailyAt(6);
}
Дело в том, что laravel.log
действительно создается, но я ничего не вижу в этом, и я не знаю, действительно ли выполняются мои команды. Означает ли это, что cron действительно работает? Как я могу отладить проблему, так как я не вижу в базе данных, что ее заполнил cron. Когда я иду в папку /var/www/Laravel
и выполнить команды, которые должны вызываться в планировщике, dataabse заполняется правильно.
Может быть, вам нужно изменить эту строку:
* * * * * php /var/www/Laravel artisan schedule:run >> laravel.log
к:
* * * * * /usr/bin/php /var/www/Laravel artisan schedule:run >> laravel.log
Я нашел ответ на самом деле:
* * * * * php /var/www/Laravel/artisan schedule:run >> laravel.log
php
работает глобально, но artisan
должен быть указан путь, который находится в моей главной папке Laravel