getBody() vracia rozhranie prúdu, aj keď Guzzle už odpoveď stiahol. Ak chcete požiadať o prírastkové sieťové doručenie cez dopredný proxy, nastavte stream v požiadavke:

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

Toto používa existujúceho klienta; pre verejný koncový bod HTTP vyberte adresu zo zoznamu HTTP proxy a nahraďte ukážkovú URL proxy. Podpora streamovania závisí od jeho handlera; samotné rozhranie prúdu vám nepovie, či handler doručil telo prírastkovo.

Keď odpoveď dorazí, čítajte ďalej obmedzené časti. Prevod $body na reťazec znova zhromaždí celé telo. Parser riadkov môže tiež vyzerať zaseknutý pri čakaní na nový riadok, aj keď sieťové bajty dorazili. Sú to oneskorenia spotreby, takže zmena proxy ich neodstráni.

read_timeout obmedzuje jednotlivé čakania na čítanie v rámci podporovanej implementácie prúdu. Nedáva nekonečnému feedu celkovú životnosť desať sekúnd. Spracúvajte časový limit, EOF a chyby oddelene a zatvorte telo, keď sa spracovanie skončí alebo zruší.

Súvisiace články