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

我认为这应该有所帮助