| 
#!/usr/bin/env php<?php
 /**
 * @author stev leibelt <[email protected]>
 * @since 2014-07-20
 */
 
 namespace Net\Bazzline\Component\ProcessForkManager\Example\WithReachingTimeLimit;
 
 require_once __DIR__ . '/../bootstrap.php';
 require_once 'ExampleTask.php';
 
 use Net\Bazzline\Component\ProcessForkManager\ForkManagerFactory;
 
 $factory = new ForkManagerFactory();
 $manager = $factory->create();
 $maximumRunTimeInSeconds = 9;
 
 $taskOne = new ExampleTask();
 $taskTwo = new ExampleTask();
 $taskThree = new ExampleTask();
 
 $taskOne->setRunTime(($maximumRunTimeInSeconds - 3)); //there is an offset of 2 seconds
 $taskTwo->setRunTime($maximumRunTimeInSeconds);
 $taskThree->setRunTime(($maximumRunTimeInSeconds + 1));
 
 /**
 * @var array|ExampleTask[] $tasks
 */
 $tasks = array(
 1 => $taskOne,
 2 => $taskTwo,
 3 => $taskThree
 );
 
 foreach ($tasks as $task) {
 $manager->addTask($task);
 }
 
 $manager->getTimeLimitManager()->setBufferInSeconds(0);
 $manager->getTimeLimitManager()->setLimitInSeconds($maximumRunTimeInSeconds);
 
 $manager->execute();
 
 foreach ($tasks as $key => $task) {
 $status = ($task->isAborted()) ?
 'aborted' : (($task->isFinished()) ?
 'finished' : 'not finished');
 echo 'task ' . $key . ' with run time of ' . $task->getRunTime() . ' seconds has been ' . $status . PHP_EOL;
 }
 
 |