Parallel
Parallel একটি প্যারালাল টাস্ক শিডিউলিং টুল, যা একটি প্রোগ্রামে একাধিক অ্যাসিঙ্ক্রোনাস টাস্ক একসাথে সম্পাদন করার অনুমতি দেয় এবং সমস্ত টাস্ক সম্পন্ন হওয়ার পর ফলাফল পাওয়ার সুযোগ দেয়।Parallel বাধাগুলির ভিত্তিতে তৈরি।
নোট
নিম্নস্তরের স্বয়ংক্রিয়ভাবে ড্রাইভার ধরণ সনাক্ত করে, শুধুমাত্র 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;
}