Guzzle Pool: ਹਰ ਜੌਬ ਦਾ ਪ੍ਰੌਕਸੀ requestAsync ਨੂੰ ਦਿਓ
ਪ੍ਰੌਕਸੀ ਵਿਕਲਪ PSR-7 ਬੇਨਤੀ ਸੁਨੇਹੇ ਜਾਂ ਰੋਕਣ ਵਾਲੀ ਫੈਕਟਰੀ ਦੀ ਥਾਂ ਹਰ ਐਸਿੰਕ ਓਪਰੇਸ਼ਨ ਨਾਲ ਜੋੜੋ।
ਹਰ 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() ਕਾਲ ਕਰਨਾ ਰੋਕ ਸਕਦਾ ਹੈ ਜਦ ਪੂਲ ਸਮਕਾਲੀ ਕੰਮ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੋਵੇ।
ਐਪ ਦੀ ਮੌਜੂਦਾ ਸੰਭਾਲ ਵਰਤ ਕੇ ਪੂਰੇ ਅਤੇ ਰੱਦ ਕੀਤੇ ਕਾਲਬੈਕ ਸ਼ਾਮਲ ਕਰੋ। ਜੌਬ ਕੁੰਜੀ, ਚੁਣੀ ਪ੍ਰੌਕਸੀ ਪਛਾਣ ਅਤੇ ਕੋਸ਼ਿਸ਼ ਨੰਬਰ ਦੋਵੇਂ ਨਤੀਜਿਆਂ ਵਿੱਚ ਰੱਖੋ; ਮੁਕੰਮਲ ਹੋਣ ਦਾ ਕ੍ਰਮ ਇਨਪੁਟ ਕ੍ਰਮ ਤੋਂ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ। ਜੌਬ ਲਈ ਇੱਕ ਦਰਜ ਕਰਨ ਤੋਂ ਬਾਅਦ ਫੈਕਟਰੀ ਵਿੱਚ ਚੋਰੀ ਛਿਪੇ ਹੋਰ ਐਂਡਪੌਇੰਟ ਨਾ ਚੁਣੋ।
ਕਨਕਰੰਸੀ ਮੁੱਲ ਇਸ ਪੂਲ ਦੇ ਕੰਮ ਨੂੰ ਸੀਮਿਤ ਕਰਦਾ ਹੈ। ਇੱਕ ਹੀ ਸੀਮਿਤ ਪ੍ਰੌਕਸੀ ਜਾਂ ਖਾਤਾ ਚੁਣਨ ਵਾਲੇ ਕਈ ਜੌਬਾਂ ਨੂੰ ਫਿਰ ਵੀ ਉਸ ਐਂਡਪੌਇੰਟ ਲਈ ਵੱਖਰਾ ਬਜਟ ਲੋੜੀਂਦਾ ਹੋ ਸਕਦਾ ਹੈ।
ਨਤੀਜਿਆਂ ਦੀ ਵਿਆਖਿਆ ਪੜਾਅ ਅਨੁਸਾਰ ਕਰੋ: ਟਿਕਾਣੇ ਦਾ ਰੱਦ ਹੋਣਾ, ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਕਨੈਕਸ਼ਨ ਟਾਈਮਆਊਟ ਵੱਖਰੇ ਨਤੀਜੇ ਹਨ। ਜੌਬ ਨਾਲ ਰੱਖੇ ਭੇਜਣ ਵਿਕਲਪ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਕਿਹੜੇ ਰਾਹ ਨੇ ਹਰ ਨਤੀਜਾ ਦਿੱਤਾ।