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

Priložite stabilan identifikator prenosa dok konfigurišete svaki handle. Ako testirate javne krajnje tač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 prenos, upotrebite 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 tač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 provajder.

Privatni metapodaci beleže vašu nameravanu konfiguraciju; ne mogu dokazati koju je IP adresu odredište videlo. 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 tačka sadrži akreditive, beleženje tog URL-a za svaki neuspeli prenos širi lozinku po celoj vašoj zbirci grešaka.

Ovaj mali korak knjigovodstva olakšava čitanje mešovitih rezultata: jedan posao, jedan pokušaj, jedan izabrani proxy i jedan stvarni ishod. Takođe izbegava oslanjanje na slučajne prikaze handlea koji su se promenili između cURL API-ja zasnovanih na resursima i na objektima u PHP-u.

Povezani članci