Parallel
Parallel एक समानांतर कार्य अनुसूचक उपकरण है, जो कार्यक्रम में एक साथ कई असिंक्रोनस कार्यों को निष्पादित करने की अनुमति देता है और सभी कार्यों के पूरा होने पर परिणाम प्राप्त करता है। Parallel Barrier पर आधारित है।
नोट
निचले स्तर पर स्वचालित रूप से ड्राइवर प्रकार का पहचान होगा, केवल Swoole/Swow/Fiber ड्राइवर का समर्थन करता है।संकेत
इस फ़ीचर के लिए workerman>=5.1.0 की आवश्यकता है।
<?php
use Workerman\Connection\TcpConnection;
use Workerman\Coroutine\Parallel;
use Workerman\Events\Swoole;
use Workerman\Protocols\Http\Request;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
// Http Server
$worker = new Worker('http://0.0.0.0:8001');
$worker->eventLoop = Swoole::class; // या Swow::class या Fiber::class
$worker->onMessage = function (TcpConnection $connection, Request $request) {
$parallel = new Parallel();
for ($i=1; $i<5; $i++) {
$parallel->add(function () use ($i) {
// कुछ करना
return $i;
});
}
$results = $parallel->wait();
$connection->send(json_encode($results)); // प्रतिक्रिया: [1,2,3,4]
};
Worker::runAll();
इंटरफेस विवरण
interface ParallelInterface
{
/**
* निर्माणकर्ता, $concurrent समानांतर कार्यों की संख्या है, -1 का अर्थ है समानांतर कार्यों की संख्या की कोई सीमा नहीं
*/
public function __construct(int $concurrent = -1);
/**
* एक समानांतर कार्य जोड़ें
*/
public function add(callable $callable, ?string $key = null): void;
/**
* सभी कार्यों के पूरा होने की प्रतीक्षा करें और परिणाम लौटाएं
*/
public function wait(): array;
/**
* कार्य में हुए अपवाद के परिणाम प्राप्त करें
*/
public function getExceptions(): array;
}