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
$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;
}