Что такое планировщик задач PHP?
Планировщик задач (Job Scheduler) — это библиотека для PHP, которая позволяет выполнять периодические задания (cron‑задачи) прямо из кода приложения, не полагаясь на системный crond. Она особенно полезна на shared‑хостингах, где доступ к crontab ограничен, или в контейнеризированных средах (Docker).
Зачем нужен планировщик?
- Автономность — все правила периодичности хранятся в PHP‑коде, а не в системных конфигах.
- Гибкость — можно динамически менять расписание, приостанавливать задачи, логировать выполнение.
- Интеграция — легко встраивается в фреймворки (Laravel, Symfony) и ORM.
Установка
Установите через Composer:
composer require dragonmantank/cron-expressionЭто базовая библиотека для работы с cron‑выражениями. Для полноценного планировщика часто используют peppeocchi/php-cron-scheduler:
composer require peppeocchi/php-cron-schedulerОсновные функции
- Парсинг cron‑выражений — проверка, соответствует ли текущее время шаблону (
* * * * *). - Многозадачность — запуск нескольких заданий в одном процессе.
- Параллельность — через
exec()илиpcntl_fork(). - Логирование — вывод stdout/stderr в файл.
- Обработка ошибок — повторные попытки, уведомления.
Пример кода
<?php
require 'vendor/autoload.php';
use GO\Scheduler;
$scheduler = new Scheduler();
// Задача: каждую минуту
$scheduler->call(function() {
echo "Выполняется в " . date('Y-m-d H:i:s') . "\n";
})->everyMinute();
// Задача: каждый час в 30 минут
$scheduler->call('cleanup_logs')->at('30 * * * *');
// Задача: по рабочим дням в 9:00
$scheduler->exec('php artisan report:generate')->at('0 9 * * 1-5');
// Запуск всех готовых задач
$scheduler->run();
Когда использовать
Планировщик задач PHP идеален для:
- отправки email‑рассылок по расписанию;
- очистки устаревших данных (логов, сессий);
- генерации отчётов в непиковые часы;
- синхронизации с внешними API (раз в час);
- обновления кэша (раз в 5 минут).
Не заменяйте системный cron для критичных системных операций (бэкап БД, обновление сертификатов) — используйте его как дополнительный слой для бизнес‑логики.