सहयोग समाशोधन Barrier
Barrier एक उपकरण है जो सहयोग समन्वय के लिए उपयोग किया जाता है, जो फ़ैसले लेने से पहले सभी सहकारियों के पूरा हो जाने की प्रतीक्षा करता है। Barrier PHP संदर्भ गिनती पर आधारित है।
ध्यान दें
निचले स्तर पर स्वचालित रूप से ड्राइवर प्रकार की पहचान की जाती है, केवल Swoole/Swow/Fiber ड्राइवर का समर्थन किया जाता हैसंकेत
इस विशेषता के लिए workerman>=5.1.0 की आवश्यकता है
<?php
use Workerman\Connection\TcpConnection;
use Workerman\Coroutine\Barrier;
use Workerman\Coroutine;
use Workerman\Events\Swoole;
use Workerman\Protocols\Http\Request;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
// Http सर्वर
$worker = new Worker('http://0.0.0.0:8001');
$worker->eventLoop = Swoole::class; // या Swow::class या Fiber::class
$worker->onMessage = function (TcpConnection $connection, Request $request) {
$barrier = Barrier::create();
for ($i=1; $i<5; $i++) {
Coroutine::create(function () use ($barrier, $i) {
// कुछ करें
});
}
// सभी सहयोग के काम पूरे होने की प्रतीक्षा करें
Barrier::wait($barrier);
$connection->send('सभी कार्य पूरे हो गए');
};
Worker::runAll();
अंतरफलक विवरण
interface BarrierInterface
{
/**
* एक नया Barrier उदाहरण बनाएं
*/
public static function create(): object;
/**
* वर्तमान सहयोग को रोकें, निर्दिष्ट Barrier में सभी सहयोग कार्यों के पूरा होने की प्रतीक्षा करें
*/
public static function wait(object &$barrier, int $timeout = -1): void;
}