I set this on my cron file
* * * * * php artisan schedule:run >> /dev/null 2>&1
I have this in my 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');
}
}
If I manually run
php artisan schedule:run
I got
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 &
and I see the file to be the log file generated perfectly fine.
Then, I wait another 5 mins, I don't see anything else. I am supposed to get five more logs generated.
Did I do anything wrong ? How do I check this ?
Instead of having php artisan schedule:run
in cron, create a shell script:
#!/bin/bash
/full/path/to/php /full/path/to/artisan schedule:run >> /tmp/debug.log 2>&1
In your crontab, place the full path to this shell script.
Your crontab runs every minute. If you want to it every 5 minutes, use this:
*/5 * * * * /home/user/myshellscript.sh
You can then examine /tmp/debug.log
for errors.
If you do not want a bash scipt, try this in crontab:
*/5 * * * * /full/path/to/php /full/path/to/artisan "schedule:run" >> /tmp/debug.log 2>&1