Multi-cURL преноси се завршавају својим редоследом. Ако сте сваком handle-у доделили други прокси, први завршени резултат не мора нужно припадати првом проксију на вашој улазној листи.

Приложите стабилан идентификатор преноса док конфигуришете сваки handle. Ако тестирате јавне крајње тачке које се могу бирати, листа HTTP проксија нуди HTTP кандидате. PHP излаже механизам приватних података libcurl-а:

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

Када curl_multi_info_read() пријави завршени пренос, употребите враћени handle да повратите идентификатор:

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

Водите запис апликације са кључем тог идентификатора који садржи одредиште, конфигурисани прокси и број покушаја. Поновни покушај кроз други прокси заслужује нови запис покушаја, чак и ако припада истом укупном послу.

Држите три врсте адреса одвојено

Конфигурисана крајња тачка проксија је адреса која се даје cURL-у. Адреса партнера везе описује мрежну везу коју је cURL отворио. Излазна IP адреса коју види одредиште информација је коју пријављује друга страна. Могу се разликовати, посебно код ланчаних проксија или оних којима управља провајдер.

Приватни метаподаци бележе вашу намеравану конфигурацију; не могу доказати коју је IP адресу одредиште видело. Обрнуто, IP одговор одредишта не говори вам аутоматски који је handle у вашем програму то произвео.

Чувајте безбедан идентификатор проксија у рутинским записима. Ако пуна крајња тачка садржи акредитиве, бележење тог URL-а за сваки неуспели пренос шири лозинку по целој вашој збирци грешака.

Овај мали корак књиговодства олакшава читање мешовитих резултата: један посао, један покушај, један изабрани прокси и један стварни исход. Такође избегава ослањање на случајне приказе handle-а који су се променили између cURL API-ја заснованих на ресурсима и на објектима у PHP-у.

Повезани чланци