Multi-cURL transferi završavaju svojim redoslijedom. Ako ste svakom handleu dodijelili drugi proxy, prvi završeni rezultat ne pripada nužno prvom proxyju na vašoj ulaznoj listi.

Priložite stabilni identifikator transfera dok konfigurišete svaki handle. Ako testirate javne krajnje točke koje se mogu birati, lista 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 završeni transfer, upotrijebite vraćeni handle da povratite identifikator:

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

Vodite zapis aplikacije s ključem tog identifikatora koji sadrži odredište, konfigurisani 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

Konfigurisana krajnja točka proxyja je adresa 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 akreditive, bilježenje tog URL-a za svaki neuspjeli transfer širi lozinku po cijeloj vašoj zbirci grešaka.

Ovaj mali korak knjigovodstva olakšava čitanje mješovitih 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