Guzzle Pool: مرّر وسيط كل مهمة إلى requestAsync
أرفق خيارات الوسيط بكل عملية غير متزامنة بدلًا من رسالة طلب PSR-7 أو مصنع يحجب التنفيذ.
ضع وسيط كل مهمة من مهام Guzzle على العملية غير المتزامنة التي تبدأها الحوض (pool). داخل إعداد عميل قائم، استخدم مصانع الوعود:
$operations = function () use ($client, $jobs) {
foreach ($jobs as $id => $job) {
yield $id => function () use ($client, $job) {
return $client->requestAsync('GET', $job['url'], [
'proxy' => $job['proxy'],
'timeout' => 20,
]);
};
}
};
$pool = new GuzzleHttp\Pool($client, $operations(), [
'concurrency' => 4,
]);
$pool->promise()->wait();
كل مهمة مُتحقَّق منها توفّر وجهة ووسيطًا. للطلب العام المسموح به، يمكن لمرشح HTTP من قائمة وسطاء HTTP أن يوفّر عنوان URL لوسيط تلك المهمة دون بيانات اعتماد؛ ويحدث الاختيار قبل تشغيل مصنعها. يصف طلب PSR-7 رسالة HTTP، بينما تتحكم خيارات الإرسال هذه في النقل. طباعة قيمة وسيط أو تخزينها بجانب الرسالة لا تستطيع تهيئة عملية ترسلها بطريقة أخرى.
أعِد requestAsync() من المصنع. استدعاء request() المتزامن هناك قد يحجب بينما يحاول الحوض بدء أعمال متزامنة.
أضف ردود النداء للمكتمل والمرفوض باستخدام المعالجة القائمة في التطبيق. احتفظ بمفتاح المهمة ومعرّف الوسيط المختار ورقم المحاولة في كلتا النتيجتين؛ ترتيب الإكمال يختلف عن ترتيب الإدخال. لا تختر سرًا نقطة نهاية أخرى في المصنع بعد تسجيل واحدة للمهمة.
قيمة التزامن تحدّ من عمل هذا الحوض. قد تتطلب عدة مهام تختار وسيطًا أو حسابًا واحدًا مقيّدًا ميزانية منفصلة لتلك النقطة.
فسّر النتائج حسب المرحلة: رفض الوجهة ومصادقة الوسيط ومهلة الاتصال نتائج مختلفة. تُظهر خيارات الإرسال المحفوظة مع المهمة أي مسار أنتج كل نتيجة.