A multi-cURL átvitelek a saját sorrendjükben fejeződnek be. Ha minden handle-hez más proxyt rendelt, az első befejezett eredmény nem feltétlenül a bemeneti listája első proxyjához tartozik.

Csatoljon stabil átvitel-azonosítót minden handle beállításakor. Ha kiválasztható nyilvános végpontokat tesztel, a HTTP proxy lista HTTP jelölteket kínál. A PHP feltárja a libcurl privát adatok mechanizmusát:

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

Amikor a curl_multi_info_read() befejezett átvitelről számol be, a visszaadott handle-lel kérje vissza az azonosítót:

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

Vezessen egy alkalmazásrekordot, amelynek kulcsa ez az azonosító, és tartalmazza a célt, a beállított proxyt és a kísérlet számát. Egy másik proxyn keresztüli újrapróbálkozás új kísérletrekordot érdemel, még akkor is, ha ugyanahhoz az átfogó feladathoz tartozik.

Tartsa külön a háromféle címet

A beállított proxy végpont a cURL-nek átadott cím. Egy kapcsolat peer címe a cURL által megnyitott hálózati kapcsolatot írja le. A cél által látott kilépő IP a másik oldalról jelentett információ. Ezek eltérhetnek, különösen láncolt vagy szolgáltató által kezelt proxyk esetén.

A privát metaadatok a szándékolt konfigurációt rögzítik; nem tudják bizonyítani, melyik IP-t látta a cél. Fordítva, a cél IP-válasza nem mondja meg automatikusan, hogy a programjában melyik handle állította elő.

Tároljon biztonságos proxy-azonosítót a rutinnaplókban. Ha a teljes végpont hitelesítő adatokat tartalmaz, akkor az URL naplózása minden sikertelen átvitelnél szétterjeszti a jelszót a teljes hibagyűjteményében.

Ez a kis könyvelési lépés könnyebben olvashatóvá teszi a vegyes eredményeket: egy feladat, egy kísérlet, egy kiválasztott proxy és egy tényleges eredmény. Elkerüli azt is, hogy a PHP erőforrás- és objektumalapú cURL API-jai között megváltozott véletlen handle-reprezentációkra támaszkodjon.

Kapcsolódó cikkek