getBody() վերադարձնում է հոսքի ինտերֆեյս նույնիսկ այն դեպքում, երբ Guzzle-ն արդեն ներբեռնել է պատասխանը։ Առաջադիմական ցանցային առաքում պահանջելու համար առաջատար պրոքսիի միջոցով, սահմանեք stream հարցման վրա.

$response = $client->request('GET', 'https://example.com/stream', [
    'proxy' => 'http://proxy.example:8080',
    'stream' => true,
    'read_timeout' => 10,
]);
$body = $response->getBody();

Սա օգտագործում է գոյություն ունեցող հաճախորդ; հանրային HTTP վերջնակետի համար ընտրեք հասցե HTTP պրոքսիների ցանկից և փոխարինեք օրինակի պրոքսի URL-ը։ Հոսքի աջակցությունը կախված է դրա մշակիչից; հոսքի ինտերֆեյսը միայնակ չի կարող ասել՝ արդյոք մշակիչը մարմինը հանձնել է աստիճանաբար։

Պատասխանը ստանալուց հետո շարունակեք կարդալ սահմանափակ մասեր։ $body-ը տողի վերածելը կրկին հավաքում է ամբողջ մարմինը։ Տողերի վերլուծիչը նույնպես կարող է կախված թվալ նոր տողի սպասելիս, նույնիսկ եթե ցանցային բայթերը հասել են։ Սրանք սպառման ուշացումներ են, ուստի պրոքսին փոխելը չի վերացնի դրանք։

read_timeout սահմանափակում է անհատական ընթերցման սպասումները աջակցվող հոսքի իրականացման ներքո։ Այն անվերջ հոսքին չի տալիս տասը վայրկյան ընդհանուր կյանք։ Կառավարեք ժամանակի սպառումը, EOF-ը և սխալները առանձին, և փակեք մարմինը, երբ մշակումն ավարտվի կամ չեղարկվի։

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