העברות 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 של PHP המבוססים על משאבים ועל אובייקטים.

מאמרים קשורים