我在我的cron文件中设置了这个
* * * * * php artisan schedule:run >> /dev/null 2>&1
我的Kenel.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');
}
}
如果我手动运行
php artisan schedule:run
我得到了
Running scheduled command: curl http://localhost:8888/fbwifi/acl_update > '/Applications/MAMP/htdocs/code/site/portal/public/tasks/log_2016_10_21_14:01:33.txt' 2>&1 &
我看到文件生成的日志文件非常好。
然后,我再等5分钟,我什么也看不见。 我想再生成5个日志。
我做错了什么吗?我该如何检查?
我现在正在接受任何建议。
任何提示/建议/帮助都将非常感谢!
答案 0 :(得分:2)
不要在cron中使用php artisan schedule:run
,而是创建一个shell脚本:
#!/bin/bash
/full/path/to/php /full/path/to/artisan schedule:run >> /tmp/debug.log 2>&1
在crontab中,放置此shell脚本的完整路径。
你的crontab每分钟运行一次。如果你想每5分钟一次,请使用:
*/5 * * * * /home/user/myshellscript.sh
然后,您可以检查/tmp/debug.log
是否有错误。
如果您不想使用bash scipt,请在crontab中尝试:
*/5 * * * * /full/path/to/php /full/path/to/artisan "schedule:run" >> /tmp/debug.log 2>&1