Периодическое выполнение кода (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; });
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта