Планировщик задач PHP: cron-express

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

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

Начать курс

Что такое cron-express?

cron-express — это легковесная PHP-библиотека для создания и управления планировщиками задач (cron-подобных заданий) прямо в коде вашего приложения. Она позволяет задавать периодичность выполнения задач с помощью человекочитаемого синтаксиса (например, 'every 10 minutes', 'daily at 14:30'), вместо сложных cron-выражений. Библиотека идеально подходит для фреймворков Laravel, Symfony и чистого PHP.

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

В веб-разработке часто требуется выполнять фоновые операции: отправка email-рассылок, очистка кэша, генерация отчетов, синхронизация данных с API. Использование системного cron требует доступа к серверу и редактирования crontab. cron-express решает эту проблему, позволяя управлять задачами программно — все настройки хранятся в PHP-файлах, что упрощает деплой и версионирование.

Установка

Установите библиотеку через Composer:

composer require mtdowling/cron-expression

Или для более продвинутого планировщика с человекочитаемым синтаксисом:

composer require dragonmantank/cron-expression

После установки подключите автозагрузчик Composer:

require 'vendor/autoload.php';

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

  • Человекочитаемые интервалы: 'every 5 minutes', 'every hour', 'daily at 10:00', 'weekly on Monday'
  • Гибкая настройка времени: поддержка часовых поясов, дней недели, месяцев
  • Интеграция с фреймворками: готовые решения для Laravel (Artisan) и Symfony (Console)
  • Безопасность: предотвращение одновременного запуска одной задачи (overlapping protection)
  • Логирование: встроенная поддержка записи результатов выполнения в файл или БД

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

<?php
require 'vendor/autoload.php';

use Cron\CronExpression;

// Создаем задачу: выполнять каждые 30 минут
$cron = new CronExpression('*/30 * * * *');

// Проверяем, нужно ли выполнить сейчас
if ($cron->isDue(new DateTime())) {
    echo 'Запускаем задачу: очистка кэша';
    // Ваш код
    clearCache();
}

// Пример с человекочитаемым синтаксисом (требует библиотеку dragonmantank/cron-expression)
$expression = 'every 2 hours';
$cron = CronExpression::factory($expression);
echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); // 2025-04-01 14:00:00
?>

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

  • Веб-приложения: для отправки уведомлений, обновления статистики
  • API-сервисы: периодическая синхронизация с внешними сервисами
  • Разработка: тестирование cron-задач локально без настройки системного cron
  • Деплой: хранение расписания в Git вместе с кодом

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

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