Nếu một yêu cầu bất đồng bộ hết hạn trước khi mở kết nối, hãy kiểm tra giới hạn hoạt động của tầng truyền tải cùng với thời gian chờ mạng. libcurl xếp hàng các lần truyền khi các giới hạn đó đã kín, và ngân sách thời gian chờ của chúng vẫn tiếp tục khi đang xếp hàng.

Đối với handler cURL multi dùng chung của Guzzle 7:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlMultiHandler;

$multi = new CurlMultiHandler([
    'options' => [
        CURLMOPT_MAX_TOTAL_CONNECTIONS => 24,
        CURLMOPT_MAX_HOST_CONNECTIONS => 4,
    ],
]);
$client = new Client([
    'handler' => HandlerStack::create($multi),
]);

Dùng client này cho công việc bất đồng bộ và cung cấp tùy chọn proxy dự kiến trên các thao tác. Các giá trị là ngân sách ví dụ. Với các yêu cầu công khai được cho phép qua một trung gian công khai, danh sách proxy HTTP cung cấp ứng viên cho URL proxy của các thao tác.

Tùy chọnNgân sách
MAX_TOTAL_CONNECTIONSKết nối mở đồng thời dưới handler đa
MAX_HOST_CONNECTIONSKết nối tới một máy chủ/cổng; kết nối proxy được tính vào điểm cuối proxy
MAXCONNECTSKết nối được giữ trong bộ đệm sau khi dùng

Nhiều trang web dùng cùng một proxy không tự động nhận hạn mức kết nối proxy riêng. Dung lượng bộ đệm nhàn rỗi không mở kết nối trước và cũng không làm chúng có thể hoán đổi cho nhau: việc dùng lại phụ thuộc vào tuyến, đích, giao thức và xác thực.

Giữ ngân sách tác vụ của ứng dụng và mọi hạn mức của nhà cung cấp nhất quán với các ngân sách truyền tải này. Chúng đếm kết nối, không phải yêu cầu mỗi giây. Tăng thời gian chờ socket không thể xác định hàng đợi hay chờ mạng đã tiêu tốn thời gian.

Bài viết liên quan