Եթե ասինխրոն հայտը ժամկետանց է լինում մինչև միացման բացումը, ստուգեք ոչ միայն ցանցային ժամկետները, այլև տրանսպորտի ակտիվ սահմանները։ Երբ այդ սահմանները զբաղված են, 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-ի ժամկետի ավելացումը չի կարող որոշել՝ հերթն է, թե ցանցային սպասումը ծախսել ժամանակը։

Առնչվող հոդվածներ