infuse/cron

Scheduled tasks module for Infuse Framework

2.1 2019-08-15 19:24 UTC

This package is auto-updated.

Last update: 2024-11-16 07:27:20 UTC


README

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.