使用Crontab配置Laravel任务调度


Configure Laravel task scheduling with Crontab

我已经创建了一个laravel任务并添加到我的crontab文件


应用程序/控制台/Kernel.php

<?php
namespace App'Console;
use Carbon;
use Illuminate'Console'Scheduling'Schedule;
use Illuminate'Foundation'Console'Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        'App'Console'Commands'Inspire::class,
    ];
    /**
     * Define the application's command schedule.
     *
     * @param  'Illuminate'Console'Scheduling'Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $now = Carbon'Carbon::now('America/New_York');
        $dt = Carbon'Carbon::parse($now);
        $time_start = $dt->toTimeString();
        $dt = str_replace('-','_',$dt);
        $dt = str_replace(' ','_',$dt);
        $dt = str_replace('/',':',$dt);
        $schedule->exec('curl '.env('APP_URL').'fbwifi/acl_update')->everyMinute()
            ->sendOutputTo(public_path().'/tasks/log_'.$dt.'.txt');
    }
}

crontab文件

*       *       *       *       *       /usr/local/bin/php artisan schedule:run
*       *       *       *       *       php artisan schedule:run

<标题> 结果

由于某些原因,我的crontab没有触发

5分钟后,我没有看到在我的public/tasks/文件夹中生成任何内容。

我甚至试图把完整的路径到我的php

我错过什么了吗?如何调试它呢?

在您的crontab中,您需要将路径设置为指向项目根目录中的artisan文件。

* * * * * php /path/to/project/artisan schedule:run

如果你找不到你的项目路由的绝对路径,那么打开终端,cd进入你的项目的路由目录,然后使用pwd命令,它会给你绝对目录。

例如:

$ cd MyUser/dev/project
$ pwd

将输出类似

的内容

/Users/MyUser/dev/project

那么您的cronjob将看起来像

* * * * * php /Users/MyUser/dev/project/artisan schedule:run

也尝试重新启动您的cron守护进程。我发现当事情不为我运行时,这很有帮助。