Запыт Guzzle можа скончыцца па таймаўце, пакуль чакае слот злучэння
Задайце актыўныя ліміты злучэнняў cURL multi на агульным апрацоўшчыку і адрознівайце іх ад ёмістасці прастойнага кэша.
Калі асінхронны запыт сканчаецца па таймаўце да адкрыцця злучэння, праверце актыўныя ліміты транспарту, а таксама сеткавыя таймаўты. libcurl ставіць перадачы ў чаргу, калі гэтыя ліміты занятыя, і іх бюджэты таймаўту працягваюцца, пакуль яны ў чарзе.
Для агульнага cURL multi-апрацоўшчыка 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),
]);Выкарыстоўвайце гэты кліент для асінхроннай працы і перадайце яго прызначаную опцыю проксі у аперацыях. Значэнні — прыкладныя бюджэты. Для публічных запытаў, дазволеных праз публічнага пасрэдніка, спіс HTTP-проксі дае кандыдатаў для проксі-URL аперацый.
| Опцыя | Бюджэт |
|---|---|
| MAX_TOTAL_CONNECTIONS | Адначасова адкрытыя злучэнні пад multi-апрацоўшчыкам |
| MAX_HOST_CONNECTIONS | Злучэнні да аднаго хоста/порта; проксі-злучэнні лічацца супраць проксі-канцавога пункта |
| MAXCONNECTS | Злучэнні, якія застаюцца ў кэшы пасля выкарыстання |
Некалькі сайтаў, якія выкарыстоўваюць адзін проксі, не атрымліваюць аўтаматычна асобных дазволаў на проксі-злучэнні. Ёмістасць прастойнага кэша не адкрывае злучэнні загадзя і не робіць іх узаемазаменнымі: паўторнае выкарыстанне залежыць ад маршруту, прызначэння, пратаколу і аўтэнтыфікацыі.
Трымайце бюджэт задач праграмы і любы дазвол пастаўшчыка ўзгодненымі з гэтымі бюджэтамі транспарту. Яны лічаць злучэнні, а не запыты ў секунду. Павелічэнне таймаўту сокета не дазваляе вызначыць, ці паглынула час чарга, ці чаканне сеткі.