ھەر بىر Guzzle ۋەزىپىسىنىڭ proxy نى كۆلچەك باشلىغان ئاسىنخرون مەشغۇلاتقا قويۇڭ. مەۋجۇت خېرىدار ئورنىتىش ئىچىدە ۋەدە زاۋۇتلىرىنى ئىشلىتىڭ:

$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 نامزاتى شۇ ۋەزىپىنىڭ گۇۋاھنامىسىز proxy URL نى تەمىنلىيەلەيدۇ؛ تاللاش ئۇنىڭ زاۋۇتى ئىجرا بولۇشتىن ئىلگىرى بولىدۇ. PSR-7 تەلىپى HTTP ئۇچۇرىنى تەسۋىرلەيدۇ، بۇ ئەۋەتىش تاللانمىلىرى بولسا توشۇشنى كونترول قىلىدۇ. ئۇچۇر يېنىغا proxy قىممىتىنى بېسىش ياكى ساقلاش ئۇنى باشقا ئۇسۇلدا ئەۋەتىدىغان مەشغۇلاتنى سەپلىيەلمەيدۇ.

زاۋۇتتىن requestAsync() قايتۇرۇڭ. ئۇ يەردە سىنخرون request() چاقىرىش كۆلچەك ئەمەلدىكىن ئىش باشلاشقا ئۇرۇنغاندا توسۇپ قويۇشى مۇمكىن.

ئىجرا قىلىنغان ۋە رەت قىلىنغان نەتىجىلەرگە پروگراممىنىڭ مەۋجۇت بىر تەرەپ قىلىشىنى ئىشلىتىپ قايتۇرۇش چاقىرىقلىرىنى قوشۇڭ. ۋەزىپە ئاچقۇچى، تاللانغان proxy كىملىكى ۋە سىناق نومۇرىنى ئىككى نەتىجىدە ساقلاڭ؛ تاماملاش تەرتىپى كىرگۈزۈش تەرتىپىدىن پەرقلىنىدۇ. ۋەزىپە ئۈچۈن بىرىنى خاتىرىلەپ بولغاندىن كېيىن زاۋۇتتا يوشۇرۇن ھالدا باشقا ئاخىرقى نۇقتىنى تاللىماڭ.

بىر ۋاقىتلىق قىممىتى بۇ كۆلچەكنىڭ ئىشىنى چەكلەيدۇ. بىر چەكلەنگەن proxy ياكى ھېساباتنى تاللىغان بىر قانچە ۋەزىپە يەنىلا شۇ ئاخىرقى نۇقتا ئۈچۈن ئايرىم بۇدجېت تەلەپ قىلىشى مۇمكىن.

نەتىجىلەرنى باسقۇچ بويىچە چۈشەندۈرۈڭ: مەنزىلنى رەت قىلىش، proxy دەلىللەش ۋە ئۇلىنىش ۋاقتىنىڭ ئۆتۈشى ئوخشاش بولمىغان نەتىجىلەر. ۋەزىپە بىلەن ساقلانغان ئەۋەتىش تاللانمىلىرى قايسى يولنىڭ ھەر بىر نەتىجىنى كەلتۈرۈپ چىقارغانلىقىنى كۆرسىتىدۇ.

مۇناسىۋەتلىك ماقالىلەر