1. Go to this page and download the library: Download innmind/process-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/ */
innmind / process-manager example snippets
use Innmind\ProcessManager\{
Manager\Parallel,
Runner\SubProcess,
};
use Innmind\OperatingSystem\Factory;
use Innmind\Immutable\{
Sequence,
Str,
};
use GuzzleHttp\Client;
$urls = Sequence::strings(
'http://google.com',
'http://github.com',
'http://wikipedia.org'
);
$http = new Client;
$os = Factory::buid();
$runner = new SubProcess($os->process());
$crawl = $urls->reduce(
Parallel::of($runner),
static function(Parallel $parallel, string $url) use ($http): Parallel {
return $parallel->schedule(static function() use ($http, $url): void {
\file_put_contents(
'/tmp/'.md5($url),
(string) $http->get($url)->getBody(),
);
});
}
);
$crawling = $crawl->start()->match(
static fn($crawling) => $crawling,
static fn() => throw new \RuntimeException('Failed to start crawlers'),
);
echo 'These urls are being crawled in parallel: '.Str::of(', ')->join($urls);
$crawling->wait()->match(
static fn() => null, // finished
static fn() => throw new \RuntimeException('A process failed'),
);
use Innmind\ProcessManager\Manager\Pool;
$pool = Pool::of(2, $runner, $os->sockets())
->schedule(function() {
sleep(10);
})
->schedule(function() {
sleep(5);
})
->schedule(function() {
sleep(60);
});
// no process started yet, same behaviour as Parallel
$running = $pool->start()->match(
static fn($running) => $running,
static fn() => throw new \RuntimeException,
);
// first two functions are started as sub processes
/*
do some code that last more than 10 seconds...
*/
// third function still not started
$pool->wait()->match( // this will run all the remaining functions
static fn() => null, // finished
static fn() => throw new \RuntimeException,
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.