Τοποθέτησε το proxy κάθε εργασίας 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();

Κάθε επικυρωμένη εργασία παρέχει προορισμό και proxy. Για ένα επιτρεπόμενο δημόσιο αίτημα, ένας υποψήφιος HTTP από τη λίστα proxy HTTP μπορεί να παρέχει το URL proxy αυτής της εργασίας χωρίς διαπιστευτήρια· η επιλογή γίνεται πριν εκτελεστεί το εργοστάσιό της. Ένα αίτημα PSR-7 περιγράφει το μήνυμα HTTP, ενώ αυτές οι επιλογές αποστολής ελέγχουν τη μεταφορά. Η εκτύπωση ή η αποθήκευση μιας τιμής proxy δίπλα στο μήνυμα δεν μπορεί να ρυθμίσει μια λειτουργία που το στέλνει με άλλον τρόπο.

Επίστρεψε requestAsync() από το εργοστάσιο. Η κλήση σύγχρονου request() εκεί μπορεί να μπλοκάρει όσο το pool προσπαθεί να ξεκινήσει παράλληλη εργασία.

Πρόσθεσε callbacks για εκπληρωμένα και απορριφθέντα αποτελέσματα χρησιμοποιώντας την υπάρχουσα διαχείριση της εφαρμογής. Κράτησε το κλειδί εργασίας, το αναγνωριστικό του επιλεγμένου proxy και τον αριθμό προσπάθειας και στα δύο αποτελέσματα· η σειρά ολοκλήρωσης διαφέρει από τη σειρά εισόδου. Μην επιλέξεις κρυφά άλλο τελικό σημείο στο εργοστάσιο αφού καταγραφεί ένα για την εργασία.

Η τιμή ταυτοχρονισμού περιορίζει την εργασία αυτού του pool. Αρκετές εργασίες που επιλέγουν ένα περιορισμένο proxy ή λογαριασμό μπορεί ακόμη να απαιτούν ξεχωριστό προϋπολογισμό για αυτό το τελικό σημείο.

Ερμήνευσε τα αποτελέσματα ανά στάδιο: απόρριψη προορισμού, έλεγχος ταυτότητας proxy και λήξη χρόνου σύνδεσης είναι διαφορετικά αποτελέσματα. Οι επιλογές αποστολής που διατηρούνται με την εργασία δείχνουν ποια διαδρομή παρήγαγε κάθε αποτέλεσμα.

Σχετικά άρθρα