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

Как работать с 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

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

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

admin

admin

Добавить комментарий

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

%d такие блоггеры, как: