Периодическое выполнение кода (Cron)

Сначала, в cron сервера надо добавить следующую запись.

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Данная команда будет каждую минуту проверять, есть ли в Laravel команды для выполнения.

Команды, которые надо выполнять в указанное время, находятся в файле app/Console/Kernel.php.

#app/Console/Kernel.php
// …

class Kernel extends ConsoleKernel
{
    // …
    protected function schedule(Schedule $schedule)
    {

        $schedule->call(function () {
            // код, выполняемый раз в минуту
        })->everyMinute();

        $schedule->call(function () {
            // код, выполняемый раз в 5 минут
        })->everyFiveMinutes();

        $schedule->call(function () {
            // код, выполняемый раз в 10 минут
        })->everyTenMinutes();

        $schedule->call(function () {
            // код, выполняемый каждый час
        })->hourly();

        $schedule->call(function () {
            // код, выполняемый каждый день
        })->daily();

        $schedule->call(function () {
            // код, выполняемый каждый день в 08:00
        })->dailyAt('08:00');

        $schedule->call(function () {
            // код, выполняемый два раза в день в 01:00 и в 12:00
        })->twiceDaily(1, 12);

        $schedule->call(function () {
            // код, выполняемый раз в неделю
        })->weekly();

        $schedule->call(function () {
            // код, выполняемый каждый понедельник в 12:00
        })->weekly()->mondays()->at('12:00');

        $schedule->call(function () {
            // код, выполняемый раз в месяц
        })->monthly();

        $schedule->call(function () {
            // код, выполняемый 15 числа каждого месяца в 12:00
        })->monthlyOn(15, '12:00');

        $schedule->call(function () {
            // код, выполняемый раз в три месяца (раз в квартал)
        })->quarterly();

        $schedule->call(function () {
            // код, выполняемый раз в год
        })->yearly();

    }
}

Консольные команды

Консольные команды выполняются через метод $schedule->exec().

#app/Console/Kernel.php
// …

$schedule->exec('rm /var/www/laravel.local/storage/framework/cache/data/*')->daily();

Можно задать условия выполнения команды через метод when().

$schedule->exec('rm /var/www/laravel.local/storage/framework/cache/data/*')->daily()
         ->when(function(){
             // выполнить команду, если код вернёт "true"
             return true;
         });