semivan/php-scheduler

v1.0.1 2019-11-02 13:00 UTC

README

Требования

Установка

composer require semivan/php-scheduler

Настройка задания

Стандартные задания

$job = new \Scheduler\Job\BaseJob();

// Установка интервала (раз в неделю)
$job->setExpression('0 0 * * 0');

// Установка выполняемого метода
$job
    ->setCallableClass(CallableClass::class)
    ->setCallableMethod('callableMethod');

Пользовательские задания (например: из базы данных)

// CustomJob реализует интерфейс \Scheduler\Job\BaseJobInterface
$jobs = CustomJob::findAll();

Настройка планировщика

$loader = new \Scheduler\Loader\BaseLoader();

// Добавление задания
$loader->addJob($job);
//$loader->addJobs($jobs);

$scheduler = new \Scheduler\Scheduler($loader);

Установка пользовательского класса лога

// CustomLog реализует интерфейс \Scheduler\Log\BaseLogInterface
$loader->setLogClass(CustomLog::class);

Установка функции дополнительной обработки задания или лога

В функцию передаются задание с логом и лог отдельно.

Ее можно использовать для проверки результата, сохранения лога в базу и т.д.

$loader->setCallback([new CallableClass(), 'callback']);

Запуск планировщика

$completedJobs = $scheduler->run();

Настройте файл конфигурации cron на выполнение этой команды с интервалом раз в минуту

Запуск задания без добавления в очередь

$log = $scheduler->runJob($job);
$job->addLog($log);