getBody() returnerar ett stream-gränssnitt även när Guzzle redan har laddat ner svaret. För att begära inkrementell nätverksleverans via en forward-proxy, sätt stream på begäran:

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

Detta använder en befintlig klient; för en offentlig HTTP-slutpunkt, välj en adress från HTTP-proxylistan och ersätt exempel-proxy-URL:en. Streamingsupport beror på dess handler; stream-gränssnittet ensamt kan inte berätta om handlern levererade bodyn inkrementellt.

När svaret anländer, fortsätt läsa begränsade delar. Att konvertera $body till en sträng samlar ihop hela bodyn igen. En radparser kan också verka hänga medan den väntar på en ny rad, även om nätverksbytes har anlänt. Det är förbrukningsförseningar, så ett byte av proxy tar inte bort dem.

read_timeout begränsar enskilda läsningar under den stödda stream-implementeringen. Det ger inte en ändlös feed en total livstid på tio sekunder. Hantera timeout, EOF och fel separat, och stäng bodyn när bearbetningen slutar eller avbryts.

Relaterade artiklar