Skip to content

Some kind of supervisor helper when you only have cronjobs available

Notifications You must be signed in to change notification settings

Toflar/cronjob-supervisor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cronjob Supervisor

Need to have a number of workers on some server but have no access to any daemon like supervisord or the likes but can configure a minutely cronjob? This library might come in handy for you then.

  1. Installation

composer require toflar/cronjob-supervisor

  1. Create your runner.php:
<?php

require_once 'vendor/autoload.php';

use Symfony\Component\Process\Process;
use Toflar\CronjobSupervisor\BasicCommand;
use Toflar\CronjobSupervisor\Supervisor;

    $supervisor = Supervisor::withDefaultProviders('/some/directory/you/want/to/store/your/state');
    
    $supervisor
        ->withCommand(new BasicCommand('sleep 10', 2, function () {
            return new Process(['sleep', '10']);
        }))
        ->withCommand(new BasicCommand('sleep 29', 4, function () {
            return new Process(['sleep', '29']);
        }))
    ->supervise()
;
  1. Configure the minutely cronjob

* * * * * /path/to/your/php/binary/php runner.php

That's it. The Supervisor will take care that even if your jobs are still running after a minute has passed, only ever your maximum number of processes will be created.

For this to work, it uses multiple providers to check if processes are still running. Currently supported are:

  • posix_getpgid()
  • ps -p <pid>
  • tasklist /FI PID eq <pid>

Which means you should be able to run it on most Linux and Windows combinations.

About

Some kind of supervisor helper when you only have cronjobs available

Resources

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages