हर Guzzle जॉब का प्रॉक्सी उस अतुल्यकालिक ऑपरेशन पर रखें जिसे पूल शुरू करता है। मौजूदा क्लाइंट सेटअप के भीतर प्रॉमिस फ़ैक्टरियाँ इस्तेमाल करें:

$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() कॉल करना अवरोध कर सकता है जब पूल समवर्ती काम शुरू करने की कोशिश कर रहा हो।

एप्लिकेशन के मौजूदा हैंडलिंग का उपयोग करके पूर्ण और अस्वीकृत कॉलबैक जोड़ें। जॉब कुंजी, चुने गए प्रॉक्सी पहचानकर्ता और प्रयास संख्या दोनों परिणामों में रखें; पूर्णता का क्रम इनपुट क्रम से भिन्न होता है। जॉब के लिए एक दर्ज करने के बाद फ़ैक्टरी में चुपचाप दूसरा एंडपॉइंट न चुनें।

कनकरेंसी मान इस पूल के काम को सीमित करता है। एक ही सीमित प्रॉक्सी या खाता चुनने वाले कई जॉब को फिर भी उस एंडपॉइंट के लिए अलग बजट चाहिए हो सकता है।

परिणामों की व्याख्या चरण के अनुसार करें: गंतव्य अस्वीकृति, प्रॉक्सी प्रमाणीकरण और कनेक्शन टाइमआउट अलग परिणाम हैं। जॉब के साथ रखे गए भेजने के विकल्प दिखाते हैं कि किस मार्ग ने हर परिणाम दिया।

संबंधित लेख