Планировщик задач PHP

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое планировщик задач в PHP?

Планировщик задач (task scheduler) — это инструмент для автоматизации выполнения повторяющихся операций в PHP-приложениях. В отличие от CRON, который управляется на уровне сервера, библиотеки для PHP позволяют гибко задавать расписание прямо в коде проекта, интегрируя задачи с бизнес-логикой (например, отправка email-рассылок, очистка кэша, генерация отчетов).

Зачем нужен планировщик задач?

Без планировщика разработчики вынуждены вручную запускать скрипты через CRON, что усложняет управление зависимостями и тестирование. PHP-планировщик решает эти проблемы:

  • Гибкость: задачи можно ставить на паузу, менять частоту без правки системных файлов.
  • Логирование: встроенные механизмы записи ошибок и выполнения.
  • Очереди: интеграция с RabbitMQ, Redis для фоновых задач.
  • Тестирование: можно запускать задачи вручную из консоли или через тесты.

Установка

Популярный планировщик — vlucas/phpdotenv (не путать с dotenv) или cron-expression. Однако самый функциональный — symfony/scheduler (от Symfony) или peppeocchi/php-cron-scheduler. Установка через Composer:

composer require peppeocchi/php-cron-scheduler

Основные функции

  • Поддержка CRON-выражений: */5 * * * * — каждые 5 минут.
  • Однократные задачи: с точным временем выполнения.
  • Условные задачи: запуск только если выполнено условие (например, файл существует).
  • Параллельное выполнение: задачи не блокируют друг друга.
  • Обработка ошибок: автоматический повтор при сбое.

Пример кода на PHP

require 'vendor/autoload.php';

use GO\Scheduler;

$scheduler = new Scheduler();

// Задача каждые 10 минут
$scheduler->php('/path/to/script.php')
    ->everyMinute(10)
    ->output('/tmp/output.log');

// Задача с CRON-выражением
$scheduler->call(function() {
    echo "Отправка email...";
})->cron('0 9 * * 1'); // Каждый понедельник в 9 утра

// Условная задача
$scheduler->php('/path/to/report.php')
    ->daily()
    ->when(function() {
        return file_exists('/tmp/flag.txt');
    });

$scheduler->run();

Когда использовать?

Планировщик идеален для:

  • Регулярной очистки временных файлов или базы данных.
  • Отправки push-уведомлений по расписанию.
  • Обновления агрегированных данных (например, рейтингов).
  • Интеграции с внешними API (парсинг, синхронизация).

Избегайте использования планировщика для задач, которые требуют мгновенного выполнения — для этого лучше подходят очереди (например, RabbitMQ или Redis).

Заключение

Планировщик задач на PHP — это мощный инструмент для автоматизации рутины. Он особенно полезен в проектах, где CRON-записи на сервере неудобны или требуют частых изменений. Установка через Composer занимает минуту, а гибкие настройки позволяют адаптировать расписание под любые бизнес-процессы.

Рекомендаций