使用 Crontab 配置 Laravel 任务调度
Configure Laravel task scheduling with Crontab
我创建了一个 laravel 任务并添加到我的 crontab 文件
app/Console/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 守护程序。我发现有时当事情不适合我时,这会有所帮助。运行。
我创建了一个 laravel 任务并添加到我的 crontab 文件
app/Console/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 守护程序。我发现有时当事情不适合我时,这会有所帮助。运行。