Laravel “No scheduled commands are ready to run.”

2019-01-25 05:38发布

I've set up the following Laravel commands:

protected function schedule(Schedule $schedule) {
        $schedule->command('command:daily-reset')->daily();
        $schedule->command('command:monthly-reset')->monthly();
}

Then, on my server, I've set up a cron job to run once per day (at 00:00).

0 0 * * * php /home/privates/public_html/staging/current/artisan schedule:run

My cron job is running successfully each night, but the logs simply say: "No scheduled commands are ready to run."

What am I doing wrong? I would expect my daily command to run each night.

Thanks!

8条回答
Rolldiameter
2楼-- · 2019-01-25 06:04

The Laravel scheduled commands are based in the timezone that you have configured in your app/config/app.php file (laravel 5.1):

/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

'timezone' => 'America/Bogota',

So if you create a command and register it to run as a scheduled task with:

$schedule->command('command:daily-reset')->daily();

it will run every day at 00:00 OF THE TIMEZONE SPECIFIED (in this case America/Bogota)

The same thing applies if you specify a time to run the task:

$schedule->command('command:daily-reset')->daily()->at('02:30');

This will run at 02:30 am in America/Bogota local time.

查看更多
Lonely孤独者°
3楼-- · 2019-01-25 06:07

Did you try running command manuallay?

Run php artisan and see if your commands have registered.

If you have registered your commands you should see command:daily-reset and command:monthly-reset under the list of available artisan commands.

If you don't see them there go ahead and register your commands by adding it to commands property available in app/Console/Kernel.php.

protected $commands = [
    'App\Console\Commands\YourFirstCommand',
    'App\Console\Commands\YourSecondCommand'
];

Change crontab entry to

* * * * * php /home/privates/public_html/staging/current/artisan schedule:run

查看更多
登录 后发表回答