Tùy chọn proxy của Guzzle nhận URL điểm cuối đầy đủ. Đặt nó trên yêu cầu khi chỉ thao tác đó cần dùng IP đã chọn.

<?php
require __DIR__ . '/vendor/autoload.php';

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://example.com/', [
    'proxy' => 'http://203.0.113.10:8080',
    'connect_timeout' => 5,
    'timeout' => 15,
    'http_errors' => false,
]);

echo $response->getStatusCode(), PHP_EOL;
echo (string) $response->getBody();

Ví dụ giả định Guzzle 7 được cài qua Composer. Thay địa chỉ tài liệu bằng proxy HTTP thực từ nhà cung cấp hoặc danh sách proxy HTTP. Giữ đích trong URL yêu cầu: proxy là trung gian, không phải tài nguyên đang tải.

Ở đây http_errors là false để phản hồi lỗi HTTP vẫn sẵn cho việc kiểm tra. Lỗi kết nối vẫn ném ngoại lệ truyền tải. Vì vậy, đường hầm HTTPS bị từ chối khi thiết lập có thể thất bại trước khi bạn nhận đối tượng phản hồi trang web thông thường.

Kiểm tra handler khi giới hạn kết nối hoạt động khác

Guzzle có thể dùng các handler HTTP khác nhau. Tài liệu nói handler cURL tích hợp hỗ trợ connect_timeout. Handler tùy chỉnh hoặc môi trường không có PHP cURL chưa chắc tương đương. Kiểm tra handler ứng dụng đang dùng trước khi cho rằng tùy chọn thời gian chờ sao chép đã có tác dụng.

Cũng nên đặt timeout tổng thể. Mục trong danh sách miễn phí có thể ngừng trả lời giữa các lần kiểm tra, và giá trị mặc định không phải hạn chót hữu ích cho yêu cầu phải kết thúc nhanh.

Dùng bản đồ proxy

Bản đồ cho phép chọn tuyến theo scheme của đích và cung cấp tường minh host bỏ qua proxy:

'proxy' => [
    'http' => 'http://203.0.113.10:8080',
    'https' => 'http://203.0.113.10:8080',
    'no' => [],
],

Dùng mảng này thay cho tùy chọn chuỗi. Khóa HTTPS chọn đích HTTPS; giá trị HTTP của nó vẫn mô tả listener của proxy. Giao thức listener khác cần cấu hình điểm cuối khác.

Khi tự cung cấp tùy chọn proxy của yêu cầu, Guzzle chờ bạn cung cấp các giá trị no mong muốn thay vì tự sao chép từ NO_PROXY. Danh sách rỗng hữu ích cho phép thử proxy cô lập. Nếu ứng dụng có quy tắc bỏ qua có chủ ý, hãy giữ chúng tường minh.

Bài viết liên quan