การถ่ายโอน multi-cURL เสร็จสิ้นตามลำดับของตัวเอง หากคุณกำหนด proxy ที่แตกต่างให้แต่ละ handle ผลลัพธ์แรกที่เสร็จสิ้นไม่จำเป็นต้องเป็นของ proxy ตัวแรกในรายการอินพุตของคุณ

แนบตัวระบุการถ่ายโอนที่มั่นคงขณะกำหนดค่าแต่ละ handle หากคุณกำลังทดสอบ endpoint สาธารณะที่เลือกได้ รายการ proxy 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);

เก็บบันทึกแอปพลิเคชันที่ใช้ตัวระบุนั้นเป็นคีย์ ซึ่งมีปลายทาง proxy ที่กำหนดค่าไว้ และหมายเลขความพยายาม การลองใหม่ผ่าน proxy อื่นสมควรได้บันทึกความพยายามใหม่ แม้ว่าจะอยู่ในงานโดยรวมเดียวกัน

แยกที่อยู่สามประเภทออกจากกัน

endpoint ของ proxy ที่กำหนดค่าไว้คือที่อยู่ที่มอบให้ cURL ที่อยู่ peer ของการเชื่อมต่ออธิบายการเชื่อมต่อเครือข่ายที่ cURL เปิดขึ้น exit IP ที่ปลายทางมองเห็นคือข้อมูลที่รายงานจากอีกฝั่ง พวกมันอาจแตกต่างกัน โดยเฉพาะกับ proxy แบบลูกโซ่หรือที่ผู้ให้บริการจัดการ

เมทาดาทาส่วนตัวบันทึกการกำหนดค่าที่คุณตั้งใจไว้ แต่ไม่อาจพิสูจน์ได้ว่าปลายทางเห็น IP ใด ในทางกลับกัน การตอบกลับ IP ของปลายทางไม่ได้บอกคุณโดยอัตโนมัติว่า handle ใดในโปรแกรมของคุณสร้างมันขึ้นมา

จัดเก็บ ตัวระบุ proxy ที่ปลอดภัยในบันทึกประจำ. หาก endpoint ทั้งหมดมีข้อมูลรับรอง การบันทึก URL นั้นสำหรับทุกการถ่ายโอนที่ล้มเหลวจะกระจายรหัสผ่านไปทั่วทั้งชุดข้อผิดพลาดของคุณ

ขั้นตอนการบัญชีเล็กๆ นี้ทำให้ผลลัพธ์ที่ผสมกันอ่านง่ายขึ้น: หนึ่งงาน หนึ่งความพยายาม หนึ่ง proxy ที่เลือก และหนึ่งผลลัพธ์จริง นอกจากนี้ยังหลีกเลี่ยงการพึ่งพาการแสดง handle แบบบังเอิญที่เปลี่ยนไประหว่าง API cURL ของ PHP ที่อิงทรัพยากรและอิงออบเจ็กต์

บทความที่เกี่ยวข้อง