Pse një rrjedhë trupi Guzzle mund të mbetet ende në buffer
Ndërfaqja e trupit, dorëzimi i transportit dhe analizuesi juaj mund të buffer-ojnë në mënyrë të pavarur. Përdorni stream në mënyrë eksplicite dhe mbani konsumin në rritje.
getBody() kthen një ndërfaqe rrjedhje edhe kur Guzzle e ka shkarkuar tashmë përgjigjen. Për të kërkuar dorëzim rrjeti në rritje përmes një proxy përpara, vendosni stream në kërkesë:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
Kjo përdor një klient ekzistues; për një pikë fundore HTTP publike, zgjidhni një adresë nga lista e proxy-ve HTTP dhe zëvendësoni URL-në e proxy-t të shembullit. Mbështetja e transmetimit varet nga trajtuesi i saj; ndërfaqja e rrjedhjes vetëm nuk mund t'ju thotë nëse trajtuesi e dorëzoi trupin në rritje.
Pasi të mbërrijë përgjigja, vazhdoni të lexoni pjesë të kufizuara. Konvertimi i $body në varg mbledh përsëri të gjithë trupin. Një analizues rreshtash mund të duket gjithashtu i ngecur ndërsa pret një rresht të ri, edhe pse kanë mbërritur bajtë rrjeti. Këto janë vonesa konsumi, kështu që ndryshimi i proxy-t nuk do t'i heqë ato.
read_timeout kufizon pritjet individuale të leximit nën zbatimin e mbështetur të rrjedhjes. Nuk i jep një fluksi pa fund një jetëgjatësi totale prej dhjetë sekondash. Trajtoni veçmas kohën e skadimit, EOF dhe gabimet, dhe mbyllni trupin kur përpunimi përfundon ose anulohet.