Планировщик задач PHP: cron‑подобные задачи без crond

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

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

Начать курс

Что такое планировщик задач 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 для критичных системных операций (бэкап БД, обновление сертификатов) — используйте его как дополнительный слой для бизнес‑логики.

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