Как работать с cron в фреймворке Yii2?

Что такое CRON? Какой формат у команды CRON? Как создавать команды CRON в фреймворке Yii2

Сегодня я расскажу как использовать cron в вашем Yii2 проекте

В первую очередь, что такое CRON и какой формат он имеет.

cron — классический демон (компьютерная программа в системах класса UNIX), использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные каталоги.

Название cron образовано от греческого слова χρόνος (хрόнос) — время (по-английски — cronos). Разработчик cron Ken Thompson

В операционных системах Linux cron конфигурацию можно посмотреть командой:

$ crontab -e <user>

Формат файла cron

m   h dom mon dow user command
17  *  *   *   *  root php script.php

Что он означает? Друг за другом через пробел указываются данные о времени (минута, час, день, месяц, день недели), пользователе (под которым будет выполнен скрипт) и путь к скрипту для запуска.

Звездочка (*) означает “любое” значение. Крон запускается раз в минуту. Поэтому, если мы укажем

m h dom mon dow user command
* *  *   *   *  root php script.php

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

Если нам необходимо запускать скрипт в 00 часов 00 минут каждую среду, то запись будет в виде:

m h dom mon dow user command
0 0  *   *   3  root php script.php

Как переодически запускать в кроне команды Yii2?

Более подробно о том, как создавать команды в Yii2, можно прочитать здесь.

Допустим, мы создали следующую команду HelloController:

namespace app\commands;

use yii\console\Controller;

class HelloController extends Controller
{
    public $message;

    public function options($actionID)
    {
        return ['message'];
    }

    public function optionAliases()
    {
        return ['m' => 'message'];
    }

    public function actionIndex()
    {
        echo $this->message . "\n";
    }
}

Чтобы запустить ее из консоли, нам достаточно выполнить

php yii hello -m=hello

Для того, чтобы начать использовать cron вам достаточно указать эту строку в crontab -e

m h dom mon dow user command
0 0  *   *   3  root php /var/www/site.ru/yii hello -m=hello

Обязательно необходимо указывать полный путь к файлу, т.к. крон всегда будет искать начиная с корня файловой системы.

Вот и все. Остались вопросы?

Рейтинг
( 1 оценка, среднее 5 из 5 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.