getBody() returnează o interfață de flux chiar și atunci când Guzzle a descărcat deja răspunsul. Pentru a solicita livrare de rețea incrementală printr-un proxy forward, setați stream pe cerere:

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

Aceasta folosește un client existent; pentru un endpoint HTTP public, alegeți o adresă din lista de proxy HTTP și înlocuiți URL-ul de proxy din exemplu. Suportul pentru streaming depinde de handlerul său; interfața de flux singură nu vă poate spune dacă handlerul a livrat corpul incremental.

Odată ce răspunsul sosește, continuați să citiți porțiuni limitate. Convertirea $body într-un șir adună din nou întregul corp. Un parser de linii poate părea, de asemenea, blocat în timp ce așteaptă o linie nouă, chiar dacă au sosit octeți de rețea. Acestea sunt întârzieri de consum, deci schimbarea proxy-ului nu le va elimina.

read_timeout limitează așteptările individuale de citire în implementarea de flux acceptată. Nu oferă unui flux nesfârșit o durată totală de viață de zece secunde. Gestionați separat timeout-ul, EOF și erorile și închideți corpul când procesarea se termină sau este anulată.

Articole similare