प्रत्येक 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() कल गर्दा पूलले समवर्ती काम सुरु गर्न खोज्दा अवरोध हुन सक्छ।

एप्लिकेसनको विद्यमान ह्यान्डलिङ प्रयोग गरेर पूर्ण र अस्वीकृत कलब्याक थप्नुहोस्। कार्य कुञ्जी, चयन गरिएको प्रोक्सी पहिचानकर्ता र प्रयास नम्बर दुवै नतिजामा राख्नुहोस्; समापन क्रम इनपुट क्रमभन्दा फरक हुन्छ। कार्यका लागि एउटा अभिलेख गरेपछि फ्याक्ट्रीमा गोप्य रूपमा अर्को इन्डपोइन्ट नछान्नुहोस्।

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

नतिजाहरूलाई चरणअनुसार व्याख्या गर्नुहोस्: गन्तव्य अस्वीकृति, प्रोक्सी प्रमाणीकरण र जडान समयसमाप्ति फरक नतिजा हुन्। कार्यसँग राखिएका पठाउने विकल्पहरूले कुन मार्गले प्रत्येक नतिजा दियो देखाउँछन्।

सम्बन्धित लेखहरू