- PHP >= 7.1
- dragonmantank/cron-expression
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);