代码之家  ›  专栏  ›  技术社区  ›  Norgul

Digitalocean cron和Laravel

  •  0
  • Norgul  · 技术社区  · 8 年前

    我很难在Digitalocean上运行cron。我注意到有两个不同的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 scheduler部分:

    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正确填充。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Salvation Lloyd Stanley-Kemuel    6 年前

    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

    我认为这应该有帮助

        2
  •  0
  •   MEDALI    8 年前

    您可能需要更改此行:

    * * * * * php /var/www/Laravel artisan schedule:run >> laravel.log
    

    收件人:

    * * * * * /usr/bin/php /var/www/Laravel artisan schedule:run >> laravel.log
    
        3
  •  0
  •   Norgul    8 年前

    我发现一个答案实际上是:

    * * * * * php /var/www/Laravel/artisan schedule:run >> laravel.log
    

    php 在全球范围内有效,但 artisan 需要显示在我的Laravel主文件夹中的路径

    推荐文章