Kial Guzzle-korpa fluo ankoraŭ povas esti bufrita
La korpa interfaco, transporta liverado kaj via propra analizilo povas bufri sendepende. Uzu stream eksplicite kaj tenu konsumadon pliigebla.
getBody() redonas fluinterfacon eĉ kiam Guzzle jam elŝutis la respondon. Por peti pliigeblan retan liveradon tra antaŭa prokuro, agordu stream en la peto:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
Ĉi tio uzas ekzistantan klienton; por publika HTTP-finpunkto, elektu adreson el la HTTP-prokura listo kaj anstataŭigu la ekzemplan prokuran URL-on. Fluapogo dependas de ĝia traktilo; la fluinterfaco sola ne povas diri al vi, ĉu la traktilo liveris la korpon pliigeblan.
Post kiam la respondo alvenos, daŭre legu limigitajn partojn. Konverti $body al ĉeno denove kolektas la tutan korpon. Linia analizilo ankaŭ povas ŝajni blokita dum atendo de nova linio, eĉ kiam retaj bajtoj alvenis. Ĉi tiuj estas konsumaj prokrastoj, do ŝanĝi la prokuron ne forigos ilin.
read_timeout limigas unuopajn legatendojn sub la subtenata fluimplemento. Ĝi ne donas al senfina fluo totalan vivdaŭron de dek sekundoj. Traktu tempolimon, EOF kaj erarojn aparte, kaj fermu la korpon kiam prilaborado finiĝas aŭ estas nuligita.