PHP job / task scheduler that allows tick (count) or time based scheduling, initial delay, background processing, and the maximum number of executions.
Here is a simple working example to run a job every 2 seconds and another every four ticks with a tick of 0.25s:
use Blondie101010\Scheduler;
require "vendor/autoload.php";
class MyJob implements Blondie101010\Scheduler\Job {
private $count = 0;
public function run() {
$this->count ++;
echo "MyJob run {$this->count} at " . (time()) . PHP_EOL;
} // run()
} // MyJob
class MyJob2 implements Blondie101010\Scheduler\Job {
private $count = 0;
public function run() {
$this->count ++;
echo "MyJob2 run {$this->count} at " . (time()) . PHP_EOL;
} // run()
} // MyJob2
$scheduler = new Blondie101010\Scheduler\Scheduler;
$scheduler->scheduleJob(new MyJob, 't', ['interval' => 2, 'limit' => 8]);
$scheduler->scheduleJob(new MyJob2, 'c', ['interval' => 4, 'limit' => 5]);
for ($i = 0; $i < 60; $i ++) { // note that in real life, this would be a high level processing loop
$scheduler->run();
usleep(250000); // tick of about 0.25s (not counting processing)
} // for