Proxy mana yang Digunakan Transfer multi-cURL PHP Itu?
Simpan metadata proxy bersama setiap handle cURL dan bedakan rute yang dikonfigurasi dari IP keluar yang diamati tujuan.
Transfer multi-cURL selesai dalam urutannya sendiri. Jika Anda menetapkan proxy berbeda ke setiap handle, hasil pertama yang selesai belum tentu milik proxy pertama dalam daftar masukan Anda.
Lampirkan pengenal transfer yang stabil saat mengonfigurasi setiap handle. Jika Anda menguji endpoint publik yang dapat dipilih, daftar proxy HTTP menyediakan kandidat HTTP. PHP mengekspos mekanisme data privat libcurl:
$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);
Saat curl_multi_info_read() melaporkan transfer yang selesai, gunakan handle yang dikembalikan untuk memulihkan pengenal:
$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);
Simpan catatan aplikasi yang dikunci oleh pengenal itu berisi tujuan, proxy yang dikonfigurasi, dan nomor percobaan. Percobaan ulang melalui proxy lain layak mendapat catatan percobaan baru, meskipun termasuk dalam pekerjaan keseluruhan yang sama.
Pisahkan tiga jenis alamat
Endpoint proxy yang dikonfigurasi adalah alamat yang diberikan ke cURL. Alamat peer suatu koneksi menggambarkan koneksi jaringan yang dibuka cURL. IP keluar yang diamati tujuan adalah informasi yang dilaporkan dari sisi lain. Keduanya bisa berbeda, terutama dengan proxy berantai atau yang dikelola penyedia.
Metadata privat mencatat konfigurasi yang Anda maksudkan; metadata itu tidak dapat membuktikan IP mana yang diamati tujuan. Sebaliknya, respons IP tujuan tidak otomatis memberi tahu Anda handle mana dalam program Anda yang menghasilkannya.
Simpan pengenal proxy yang aman di log rutin. Jika endpoint lengkap berisi kredensial, mencatat URL itu untuk setiap transfer yang gagal menyebarkan kata sandi ke seluruh kumpulan kesalahan Anda.
Langkah pembukuan kecil ini membuat hasil campuran lebih mudah dibaca: satu pekerjaan, satu percobaan, satu proxy terpilih, dan satu hasil nyata. Ini juga menghindari ketergantungan pada representasi handle insidental yang berubah antara API cURL PHP berbasis resource dan berbasis objek.