1. Go to this page and download the library: Download luciansabo/async-command 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/ */
luciansabo / async-command example snippets
use Lucian\AsyncCommand\EntryPoint\PhpScriptEntryPoint;
use Lucian\AsyncCommand\WorkerPool;
// include composer autoloader
new WorkerPool(null, 4);
$entryPoint = new PhpScriptEntryPoint(__FILE__, 'workerCode');
foreach ($urls as $key => $url) {
$promise = $workerPool->runAsync($entryPoint, $url, $key);
$promise->then(
function ($value) {
// we receive what was returned from workerCode ([$url, strlen($contents)])
var_dump($value);
return $value;
},
function ($reason) {
echo "\n\nErrors:\n$reason\n";
return $reason;
}
);
}
$workerPool->wait();
function workerCode(string $url)
{
$contents = file_get_contents($url);
// exceptions or fatal errors should result in a fail
//throw new \Exception($url . ' caca');
//trigger_error("Warning", E_WARNING);
//trigger_error("Fatal error", E_USER_ERROR);
return [$url, strlen($contents)];
}
use GuzzleHttp\Promise\PromiseInterface;
/** @var PromiseInterface $promise */
//$promise = new Promise();
$promise->then(
// $onFulfilled
function ($value) {
echo 'The promise was fulfilled.';
},
// $onRejected
function ($reason) {
echo 'The promise was rejected.';
}
);
use Lucian\AsyncCommand\EntryPoint\PhpScriptEntryPoint;
use Lucian\AsyncCommand\WorkerPool;
{
$this->workerPool = new WorkerPool($this, 4);
}
public function execute()
{
$entryPoint = new PhpScriptEntryPoint(__FILE__, 'this:workerCode');
$param2 = 'test';
for ($i = 0; $i < 10; $i++) {
$promise = $this->workerPool->runAsync($entryPoint, $i, $param2);
$promise->then(
function ($value) {
// do something with the value
echo "$value\n";
return $value;
}
);
}
$this->workerPool->wait();
}
public function workerCode(int $counter, string $param2)
{
return $param2 . $counter;
}
}
$app = new SampleObjectMethodEntrypoint();
$app->execute();
use Lucian\AsyncCommand\EntryPoint\SymfonyCommandEntryPoint;
use Lucian\AsyncCommand\WorkerPool;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class TestAsyncCommand extends Command
{
/**
* @var WorkerPool
*/
private $workerPool;
public function __construct()
{
$this->workerPool = new WorkerPool($this, 4);
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$entryPoint = new SymfonyCommandEntryPoint($this, 'workerCode');
$param2 = 'test';
for ($i = 0; $i < 10; $i++) {
$promise = $this->workerPool->runAsync($entryPoint, $i, $param2);
$promise->then(
function ($value) {
// do something with the value
echo "$value\n";
return $value;
}
);
}
$this->workerPool->wait();
}
public function workerCode(int $counter, string $param2)
{
sleep(1); // simulate time consuming task
return $param2 . $counter;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.