PHP Schedule is a simple library for scheduling tasks in PHP.
It is inspired by the Laravel Scheduler and Symfony Messenger.
Run
composer require flexic/scheduler
to install flexic/scheduler
.
class MyScheduleEvent implements \Flexic\Scheduler\Interfaces\AbstractScheduleEventInterface
{
public function __invoke(): void
{
// ... do something
}
public function configure(Flexic\Scheduler\Interfaces\ScheduleInterface $schedule): void
{
$schedule->cron('* * * * *');
}
}
Schedule events are classes that implement the ScheduleEventInterface
.
Inside the configure
method, you can use the Schedule
object to define when the event should be scheduled to run.
Run
php bin/schedule ./path/to/event_config.php ./path/to/event_config_1.php
to start the schedule worker. Worker will automatically load all events from the given config files and run them.
Option | Description | Format | Default |
---|---|---|---|
limit | Limits the worker to the give number. Worker stops automatically if number if max Event runs exceeded. | int | - |
timeLimit | Worker stops automatically after given time. | int (seconds) | - |
intervalLimit | Worker stops automatically after give amount of intervals. | int | - |
memoryLimit | Worker stops automatically if usage of memory exceeds the given limit. | int (bytes) | - |
parallel | Worker runs events in parallel if set to true. | boolean | false |
parallelLimit | Let worker run only defined amount of parallel runs at same time. | int | - |
# Options for worker
$options = [];
$events = [
new MyScheduleEvent(),
];
$worker = new \Flexic\Scheduler\Worker(
new Flexic\Scheduler\Configuration\WorkerConfiguration($options),
$events,
new \Symfony\Component\EventDispatcher\EventDispatcher(),
);
$worker->start();
The ScheduleEventInterface
is implemented to allow the usage of a factory to create the event. This is useful if you want to use a dependency injection container to create the event.
class MyScheduleEventFactory implements \Flexic\Scheduler\Interfaces\ScheduleEventFactoryInterface
{
public function create(): array {
return [
new MyScheduleEvent('foo'),
new MyScheduleEvent('bar'),
];
}
}
Method | Description |
---|---|
cron($expression) | Schedule the event on a Cron expression. |
timezone($timezone) | Set the timezone the expression should run in. |
minute($minute) | Set minutes to cron expression |
hour($hour) | Set hours to cron expression |
day($day) | Set days to cron expression |
month($month) | Set months to cron expression |
dayOfWeek($day) | Set days of week to cron expression |
builder() | Return an instance of flexic/cron-builder . |
cron()
method accepts string, or objects of type CronBuilder
& Cron
of flexic/cron-builder
.
Methods for tokens allows usage of Expressions from flexic/cron-builder
.
Method | Description |
---|---|
start() | Starts the worker. |
stop() | Stops the worker. |
restart() | Reinitialize and restarts the worker. |
update($configuration, $scheduleEvents) | Update the worker and starts with new configuration. |
Event Name | Description |
---|---|
Worker Lifecycle | Flexic\Scheduler\Event\Event\Lifecycle\<EventName> |
WorkerInitializedEvent | Executed when worker is initialized. |
WorkerStartEvent | Executed when worker is started. |
WorkerStopEvent | Executed when worker is stopped. |
WorkerRestartEvent | Executed when worker is restarted. |
WorkerUpdateEvent | Executed everytime the worker is updated. |
Run Lifecycle | Flexic\Scheduler\Event\Event\Run\<EventName> |
WorkerRunStartEvent | Executed everytime an event is started to process. |
WorkerRunEnvEvent | Executed everytime an event is finished to process. |
Interval Lifecycle | Flexic\Scheduler\Event\Event\Interval\<EventName> |
WorkerIntervalStartEvent | Executed everytime a interval is started. |
WorkerIntervalEndEvent | Executed everytime a interval is finished. |
Execution Lifecycle | Flexic\Scheduler\Event\Event\Execute\<EventName> |
WorkerExecuteEvent | Executed everytime an event is executed. |
WorkerExecuteSequentialEvent | Executed everytime an event is executed sequentially. |
WorkerExecuteParallelStartEvent | Executed everytime an event is executed parallel. |
WorkerExecuteParallelResumeEvent | Executed everytime an parallel executed event is resumed. |
This package is licensed using the GNU License.
Please have a look at LICENSE.md.