Các giao dịch multi-cURL kết thúc theo thứ tự riêng của chúng. Nếu bạn gán một proxy khác cho mỗi handle, kết quả hoàn thành đầu tiên không nhất thiết thuộc về proxy đầu tiên trong danh sách đầu vào của bạn.

Gắn một định danh giao dịch ổn định khi cấu hình từng handle. Nếu bạn đang thử nghiệm các endpoint công khai có thể chọn, danh sách proxy HTTP cung cấp các ứng viên HTTP. PHP trình bày cơ chế dữ liệu riêng tư của libcurl:

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

Khi curl_multi_info_read() báo cáo một giao dịch đã hoàn tất, hãy dùng handle được trả về để lấy lại định danh:

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

Giữ một bản ghi ứng dụng được khóa bằng định danh đó, chứa đích, proxy đã cấu hình và số lần thử. Một lần thử lại qua proxy khác đáng có một bản ghi lần thử mới, dù nó thuộc cùng một công việc tổng thể.

Tách biệt ba loại địa chỉ

Endpoint proxy đã cấu hình là địa chỉ được cấp cho cURL. Địa chỉ ngang hàng của một kết nối mô tả kết nối mạng mà cURL đã mở. IP thoát mà đích quan sát thấy là thông tin được báo từ phía bên kia. Chúng có thể khác nhau, đặc biệt với proxy chuỗi hoặc do nhà cung cấp quản lý.

Siêu dữ liệu riêng tư ghi lại cấu hình dự định của bạn; chúng không thể chứng minh đích đã thấy IP nào. Ngược lại, phản hồi IP của đích không tự động cho bạn biết handle nào trong chương trình của bạn đã tạo ra nó.

Lưu một định danh proxy an toàn trong nhật ký thường nhật. Nếu endpoint đầy đủ chứa thông tin xác thực, việc ghi nhật ký URL đó cho mỗi giao dịch thất bại sẽ làm lộ mật khẩu khắp toàn bộ bộ sưu tập lỗi của bạn.

Bước ghi chép nhỏ này giúp đọc các kết quả hỗn hợp dễ hơn: một công việc, một lần thử, một proxy được chọn và một kết quả thực tế. Nó cũng tránh phụ thuộc vào các biểu diễn handle ngẫu nhiên đã thay đổi giữa API cURL của PHP dựa trên tài nguyên và dựa trên đối tượng.

Bài viết liên quan