Digitalocean cron 和 Laravel
Digitalocean cron and Laravel
我很难 运行 在 Digitalocean 上进行 cron 作业。我注意到有两个不同的 cron 文件,我通过进入 /etc/crontab
进入一个,另一个通过输入命令 crontab -e
进入。
为了使它更加混乱,两者都有一些不同 "layout"。第一个:
* * * * * 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
并执行应该在调度程序中调用的命令时,数据库会正确填充。
您可能需要更改此行:
* * * * * 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 主文件夹中的路径
cd ~
crontab -u root -e
* * * * * php /var/www/laravelprojectname/artisan schedule:run 1>> /dev/null 2>&1
service cron restart
grep -i cron /var/log/syslog|tail -3
我认为这应该有所帮助
我很难 运行 在 Digitalocean 上进行 cron 作业。我注意到有两个不同的 cron 文件,我通过进入 /etc/crontab
进入一个,另一个通过输入命令 crontab -e
进入。
为了使它更加混乱,两者都有一些不同 "layout"。第一个:
* * * * * 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
并执行应该在调度程序中调用的命令时,数据库会正确填充。
您可能需要更改此行:
* * * * * 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 主文件夹中的路径
cd ~
crontab -u root -e
* * * * * php /var/www/laravelprojectname/artisan schedule:run 1>> /dev/null 2>&1
service cron restart
grep -i cron /var/log/syslog|tail -3
我认为这应该有所帮助