Multi-cURL prijenosi završavaju svojim redoslijedom. Ako ste svakom handleu dodijelili drugi proxy, prvi dovršeni rezultat ne pripada nužno prvom proxyju na vašem popisu unosa.

Priložite stabilan identifikator prijenosa dok konfigurirate svaki handle. Ako testirate javne krajnje točke koje se mogu odabrati, popis HTTP proxyja nudi HTTP kandidate. PHP izlaže libcurlov mehanizam privatnih podataka:

$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);

Kada curl_multi_info_read() prijavi dovršeni prijenos, upotrijebite vraćeni handle da biste povratili identifikator:

$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);

Vodite zapis aplikacije s ključem tog identifikatora koji sadrži odredište, konfigurirani proxy i broj pokušaja. Ponovni pokušaj kroz drugi proxy zaslužuje novi zapis pokušaja, čak i ako pripada istom ukupnom poslu.

Držite tri vrste adresa odvojeno

Konfigurirana krajnja točka proxyja adresa je koja se daje cURL-u. Adresa partnera veze opisuje mrežnu vezu koju je cURL otvorio. Izlazna IP adresa koju vidi odredište informacija je koju prijavljuje druga strana. Mogu se razlikovati, posebno kod lančanih proxyja ili onih kojima upravlja pružatelj.

Privatni metapodaci bilježe vašu namjeravanu konfiguraciju; ne mogu dokazati koju je IP adresu odredište vidjelo. Obrnuto, IP odgovor odredišta ne govori vam automatski koji je handle u vašem programu to proizveo.

Čuvajte siguran identifikator proxyja u rutinskim zapisima. Ako puna krajnja točka sadrži vjerodajnice, bilježenje tog URL-a za svaki neuspjeli prijenos širi lozinku po cijeloj vašoj zbirci pogrešaka.

Ovaj mali korak knjigovodstva olakšava čitanje miješanih rezultata: jedan posao, jedan pokušaj, jedan odabrani proxy i jedan stvarni ishod. Također izbjegava oslanjanje na slučajne prikaze handlea koji su se promijenili između cURL API-ja zasnovanih na resursima i na objektima u PHP-u.

Povezani članci