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),
]);Օգտագործեք այս client-ը ասինխրոն աշխատանքի համար և գործողություններին տրամադրեք նրա նախատեսված proxy ընտրանքը։ Արժեքները օրինակային բյուջեներ են։ Հանրային միջնորդի միջոցով թույլատրված հանրային հայտերի համար HTTP proxy ցանկը գործողությունների proxy URL-ների համար թեկնածուներ է տալիս։
| Ընտրանք | Բյուջե |
|---|---|
| MAX_TOTAL_CONNECTIONS | Միաժամանակ բացված միացումներ multi handler-ի ներքո |
| MAX_HOST_CONNECTIONS | Միացումներ մեկ host/port-ին. proxy միացումները հաշվվում են proxy վերջնակետի դեմ |
| MAXCONNECTS | Օգտագործումից հետո քեշում պահվող միացումներ |
Նույն proxy-ն օգտագործող մի քանի կայքեր ավտոմատ կերպով չեն ստանում առանձին proxy միացումների քվոտաներ։ Անգործուն քեշի տարողությունը ոչ նախապես միացումներ է բացում, ոչ էլ դրանք փոխանակելի է դարձնում. վերաօգտագործումը կախված է երթուղուց, նպատակակետից, արձանագրությունից և նույնականացումից։
Հավելվածի առաջադրանքների բյուջեն և մատակարարի ցանկացած քվոտա պահեք համահունչ այս տրանսպորտային բյուջեների հետ։ Դրանք հաշվում են միացումներ, ոչ թե հարցումներ վայրկյանում։ Socket-ի ժամկետի ավելացումը չի կարող որոշել՝ հերթն է, թե ցանցային սպասումը ծախսել ժամանակը։