getBody() stream felületet ad vissza akkor is, ha a Guzzle már letöltötte a választ. Ha növekményes hálózati kézbesítést szeretne kérni egy továbbító proxyn keresztül, állítsa be a stream értéket a kérésen:

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

Ez egy meglévő klienst használ; nyilvános HTTP-végpont esetén válasszon címet a HTTP-proxy listáról, és cserélje ki a példabeli proxy URL-t. A streamelési támogatás a kezelőjétől függ; a stream felület önmagában nem tudja megmondani, hogy a kezelő növekményesen kézbesítette-e a törzset.

Amint a válasz megérkezik, folytassa a korlátozott részek olvasását. A $body karakterlánccá alakítása ismét összegyűjti a teljes törzset. Egy sorelemző is úgy tűnhet, hogy lefagy, miközben új sorra vár, pedig a hálózati bájtok megérkeztek. Ezek fogyasztási késedelmek, ezért a proxy cseréje nem szünteti meg őket.

read_timeout korlátozza az egyéni olvasási várakozásokat a támogatott stream-implementáció alatt. Nem ad egy végtelen adatfolyamnak tíz másodperces teljes élettartamot. Kezelje külön az időtúllépést, az EOF-ot és a hibákat, és zárja be a törzset, amikor a feldolgozás befejeződik vagy megszakad.

Kapcsolódó cikkek