1. Go to this page and download the library: Download hutnikau/job-scheduler library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hutnikau / job-scheduler example snippets
$executionTime = new \DateTime('2017-12-12 20:00:00');
//run monthly, at 20:00:00, 5 times
$rule = new \Scheduler\Job\RRule('FREQ=MONTHLY;COUNT=5', $executionTime);
$executionTime = new \DateTime('2017-12-12 20:00:00');
//run monthly, at 20:00:00
$rule = new \Scheduler\Job\CronRule('0 20 * 1 *', $executionTime);
$dt = new DateTime('2017-12-28T21:00:00');
$dtPlusFiveMinutes = new DateTime('2017-12-28T21:05:00');
$rRule = new CronRule('* * * * *', $dt); //minutely
$rRule->getRecurrences($dt, $dtPlusFiveMinutes); //array with six DateTime instances from '2017-12-28T21:00:00' to '2017-12-28T21:05:00'
$dt = new DateTime('2017-12-28T21:00:00');
$rRule = new CronRule('* * * * *', $dt); //minutely
$rRule->getNextRecurrence($dt); //DateTime instance ('2017-12-28T21:00:00')
//not including given date
$rRule->getNextRecurrence($dt, false); //DateTime instance ('2017-12-28T21:01:00')
$executionTime = new \DateTime('2017-12-12 20:00:00');
//run monthly, at 20:00:00, 5 times
$rule = new \Scheduler\Job\RRule('FREQ=MONTHLY;COUNT=5', $executionTime);
$job = new \Scheduler\Job\Job($rule, function () {
//do something
});
$executionTime = new \DateTime('2017-12-12 20:00:00');
//run monthly, at 20:00:00
$rule = new \Scheduler\Job\CronRule('0 20 * 1 *', $executionTime);
$job = new \Scheduler\Job\Job($rule, function () {
//do something
});
$job = \Scheduler\Job\Job::createFromString(
'FREQ=MONTHLY;COUNT=5', //Recurrence rule
'2017-12-28T21:00:00', //Start date
function() {}, //Callback
'Europe/Minsk' //Tmezone. If $timezone is omitted, the current timezone will be used
);
$job = \Scheduler\Job\Job::createFromString(
'0 0 1 * *', //Cron syntax recurrence rule
'2017-12-28T21:00:00', //Start date
function() {}, //Callback
'Europe/Minsk' //Tmezone. If $timezone is omitted, the current timezone will be used
);
$scheduler = new \Scheduler\Scheduler([
$job,
//more jobs here
]);
//also you may add jobs by `\Scheduler\Scheduler::addJob($job)`
$scheduler->addJob($anotherJob);
$jobRunner = new \Scheduler\JobRunner\JobRunner();
$from = new \DateTime('2017-12-12 20:00:00');
$to = new \DateTime('2017-12-12 20:10:00');
$reports = $jobRunner->run($scheduler, $from, $to, true);
$jobRunner = new \Scheduler\JobRunner\JobRunner();
$scheduler = new \Scheduler\Scheduler([
$job,
//more jobs here
]);
$worker = new \Scheduler\Worker\Worker($jobRunner, $scheduler);
$worker->setMaxIterations(2);
$worker->run(time(), 'PT1M');
$actionInspector = new \Scheduler\ActionInspector\FileActionInspector('pathToFile');
$jobRunner = new \Scheduler\JobRunner\JobRunner($actionInspector);
$from = new \DateTime('2017-12-12 20:00:00');
$to = new \DateTime('2017-12-12 20:10:00');
$reports = $jobRunner->run($scheduler, $from, $to, true);
//call of `run` action with the same parameters will not execute any jobs because they already logged by inspecor as finished
//$reports array is empty
$reports = $jobRunner->run($scheduler, $from, $to, true);
$actionInspector = new \Scheduler\ActionInspector\RdsActionInspector($connection);