Yêu cầu Guzzle có thể hết thời gian khi chờ chỗ kết nối
Đặt ngân sách kết nối hoạt động của cURL multi trên handler dùng chung và phân biệt chúng với dung lượng bộ đệm nhàn rỗi.
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ọn | Ngân sách |
|---|---|
| MAX_TOTAL_CONNECTIONS | Kết nối mở đồng thời dưới handler đa |
| MAX_HOST_CONNECTIONS | Kế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 |
| MAXCONNECTS | Kế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.