1. Go to this page and download the library: Download izabolotnev/fork-manager 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/ */
izabolotnev / fork-manager example snippets
class SampleTask extends \izabolotnev\Task
{
protected $expectedIterations;
protected $remainderIterations;
protected $verbose = false;
/**
* @var bool Switch to true if intercepted SIGTERM
*/
protected $isStopping = false;
/**
* @param int $iterations
* @param bool $verbose
*/
public function __construct($iterations, $verbose = false)
{
$this->expectedIterations = max($iterations, 0);
$this->remainderIterations = $this->expectedIterations;
$this->verbose = (bool)$verbose;
}
protected function afterFork()
{
pcntl_signal(SIGTERM, [$this, 'handlerSigTerm']);
// For test purposes call handlerSigTerm after Ctrl+C
pcntl_signal(SIGINT, [$this, 'handlerSigTerm']);
}
/**
* Handler for the SIGTERM signal.
* Gracefull exit
*/
public function handlerSigTerm()
{
$this->remainderIterations = min($this->expectedIterations, 5);
$this->isStopping = true;
$this->verbose && fputs(\STDOUT, 'Gracefull stop' . PHP_EOL);
}
/**
* Handler for the SIGINT signal/
* Exit immediately
*/
public function handlerSigInt()
{
$this->expectedIterations = 0;
$this->isStopping = true;
$this->beforeExit();
exit(0);
}
/**
* @return int
*/
public function process()
{
$date = new \DateTime();
$pid = getmypid();
$this->verbose && fputs(\STDOUT, sprintf('Process #%s' . PHP_EOL, $pid));
$i = 1;
while ($this->remainderIterations-- > 0) {
$this->verbose && fputs(\STDOUT, sprintf(
"Process #%d | %'.03d/%d \033[%sm%s\033[0m" . PHP_EOL,
$pid,
$i++,
$this->expectedIterations,
$this->isStopping ? '0;33' : '0;32',
$date->modify('+1 second')->format('Y-m-d H:i:s')
));
sleep(1);
}
return 0;
}
}
$task = new SampleTask(100, true);
$forkManager = new \izabolotnev\ForkManager($task, 2, [\izabolotnev\ForkManager::DEBUG => true]);
$forkManager->once();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.