getBody() retourneert een stream-interface, zelfs wanneer Guzzle het antwoord al heeft gedownload. Om incrementele netwerklevering via een forward-proxy aan te vragen, stel stream in op het verzoek:

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

Dit gebruikt een bestaande client; kies voor een openbaar HTTP-eindpunt een adres uit de HTTP-proxylijst en vervang de voorbeeld-proxy-URL. Streamingondersteuning hangt af van de handler; de stream-interface alleen kan je niet vertellen of de handler de body incrementeel heeft geleverd.

Zodra het antwoord binnenkomt, blijf beperkte delen lezen. $body naar een string converteren verzamelt de hele body opnieuw. Een regelparser kan ook lijken te hangen terwijl hij op een nieuwe regel wacht, zelfs als netwerkbytes zijn aangekomen. Dit zijn verbruiksvertragingen, dus een proxywissel verwijdert ze niet.

read_timeout beperkt individuele leeswachttijden onder de ondersteunde stream-implementatie. Het geeft een eindeloze feed geen totale levensduur van tien seconden. Behandel time-out, EOF en fouten afzonderlijk, en sluit de body wanneer de verwerking eindigt of wordt geannuleerd.

Gerelateerde artikelen