idealistsoft/framework-cron

Scheduled tasks module for Infuse Framework


Keywords
framework, cron, background, Tasks, infuse, scheduled
License
MIT

Documentation

cron

Build Status Coverage Status Latest Stable Version Total Downloads

Scheduled jobs module for Infuse Framework

Installation

  1. Install the package with composer:

    composer require infuse/cron
    
  2. Add the console command to run jobs to console.commands in your app's configuration:

    'console' => [
       // ...
       'commands' => [
          // ...
          'Infuse\Cron\Console\RunScheduledCommand'
       ]
    ]
  3. Add the migration to your app's configuration:

    'modules' => [
       'migrations' => [
          // ...
          'Cron'
       ],
       'migrationPaths' => [
          // ...
          'Cron' => 'vendor/infuse/cron/src/migrations'
       ]
    ]
  4. 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'
       ]
    ]
  5. Code up your jobs. Each job class must be invokeable.

  6. Add this to your crontab to begin running app cron jobs in the background:

    *	*	*	*	*	php /var/www/example.com/infuse cron:run

Events

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'
]

Webhooks

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.