Scheduled jobs module for Infuse Framework
-
Install the package with composer:
composer require infuse/cron
-
Add the console command to run jobs to
console.commands
in your app's configuration:'console' => [ // ... 'commands' => [ // ... 'Infuse\Cron\Console\RunScheduledCommand' ] ]
-
Add the migration to your app's configuration:
'modules' => [ 'migrations' => [ // ... 'Cron' ], 'migrationPaths' => [ // ... 'Cron' => 'vendor/infuse/cron/src/migrations' ] ]
-
Add scheduled jobs to the
cron
section of your app's configuration:'cron' => [ [ 'id' => 'users:cleanup', 'class' => 'App\Users\ScheduledJobs\Cleanup', 'minute' => 0, 'hour' => 0, 'expires' => 60, 'successUrl' => 'https://webhook.example.com' ], [ 'id' => 'orgs:bill', 'class' => 'App\Billing\ScheduledJobs\Bill' ] ]
-
Code up your jobs. Each job class must be invokeable.
-
Add this to your crontab to begin running app cron jobs in the background:
* * * * * php /var/www/example.com/infuse cron:run
You can subscribe to events with event subscribers from the symfony/event-dispatcher component. Your subscribers an listen to these events:
schedule_run.begin
schedule_run.finished
cron_job.begin
cron_job.finished
When you have created an event subscriber you can add it to your config like this:
'cronSubscribers' => [
'App\EventSubscribers\MySubscriber'
]
You can optionally specify a URL that will be called upon a successful run. The output from the run will be available using the m
query parameter. This was designed to be compatible with Dead Man's Snitch.