Как работать с 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 )
Максим Гречушников/ автор статьи
Мне 40 лет, и больше половины жизни я занимаюсь разработкой. За это время я работал с корпоративными системами, highload-проектами, интеграциями, платежными решениями, внутренними платформами и legacy-кодом, который пережил не одного разработчика. Некоторые системы, кажется, переживут и нас. Моя специализация — PHP, Laravel, backend-архитектура, DDD, тестирование, рефакторинг и техническое лидерство. Мне интересны задачи, где нужно соединить код, бизнес, данные, процессы и здравый смысл. Последние годы я много работаю с LLM и AI-инструментами: использую их для проектирования, анализа кода, документации, тестов, ревью, работы с legacy и построения инженерных процессов. Для меня LLM — это не замена разработчику, а усилитель для тех, кто умеет думать системно. В блоге я пишу о Laravel, PHP, архитектуре, тестировании, инженерной практике, управлении разработкой и реальном применении AI в работе программиста.
Понравилась статья? Поделиться с друзьями: