getBody() grąžina srauto sąsają net kai Guzzle jau atsisiuntė atsakymą. Norėdami paprašyti laipsniško tinklo pristatymo per perdavimo proxy, nustatykite stream užklausoje:

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

Tai naudoja esamą klientą; viešam HTTP galiniam taškui pasirinkite adresą iš HTTP proxy sąrašo ir pakeiskite pavyzdinio proxy URL. Srautinio perdavimo palaikymas priklauso nuo jo apdorojimo priemonės; vien srauto sąsaja negali pasakyti, ar apdorojimo priemonė kūną pristatė laipsniškai.

Kai atsakymas atvyks, toliau skaitykite ribotas dalis. $body konvertavimas į eilutę vėl surenka visą kūną. Eilučių analizatorius taip pat gali atrodyti pakibęs laukdamas naujos eilutės, nors tinklo baitai jau atvyko. Tai vartojimo vėlavimai, todėl proxy pakeitimas jų nepašalins.

read_timeout riboja atskirus skaitymo laukimus pagal palaikomą srauto įgyvendinimą. Jis nesuteikia begaliniam srautui dešimties sekundžių bendros trukmės. Atskirai tvarkykite skirtąjį laiką, EOF ir klaidas, o kūną uždarykite, kai apdorojimas baigiasi arba atšaukiamas.

Susiję straipsniai