Guzzle сұрауы қосылым ұясын күтіп тұрғанда мерзімі бітуі мүмкін
cURL multi-дің белсенді қосылым бюджеттерін ортақ handler-де орнатып, оларды бос кэш сыйымдылығынан ажыратыңыз.
Егер асинхронды сұрау қосылым ашылғанға дейін мерзімі бітсе, желілік таймауттармен қатар тасымалдаушының белсенді шектерін де тексеріңіз. Ол шектер толы болғанда libcurl тасымалдарды кезекке қояды, ал олардың таймаут бюджеттері кезекте тұрғанда жалғасады.
Guzzle 7-нің ортақ cURL multi handler-і үшін:
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 handler астында бір уақытта ашық қосылымдар |
| MAX_HOST_CONNECTIONS | Бір хост/портқа қосылымдар; прокси қосылымдары прокси соңғы нүктесіне есептеледі |
| MAXCONNECTS | Пайдаланғаннан кейін кэште қалатын қосылымдар |
Бір проксиді пайдаланатын бірнеше веб-сайт автоматты түрде бөлек прокси қосылым квотасын алмайды. Бос кэш сыйымдылығы қосылымдарды алдын ала ашпайды және оларды бір-біріне алмастырылатын етпейді: қайта пайдалану маршрутқа, межелі орынға, протоколға және аутентификацияға байланысты.
Қолданбаның тапсырма бюджеті мен провайдердің кез келген квотасын осы тасымал бюджеттеріне сай ұстаңыз. Олар секундына сұрауды емес, қосылымдарды санайды. Socket таймаутын көтеру уақытты кезектің әлде желі күтуінің жұмсағанын анықтай алмайды.