getBody() skilar stream-viðmóti jafnvel þótt Guzzle hafi þegar hlaðið niður svarinu. Til að biðja um skrefvísan netafhendingu í gegnum framproxy, stilltu stream á beiðnina:

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

Þetta notar núverandi biðlara; fyrir opinbert HTTP-endapunkt skaltu velja vistfang af HTTP-proxylistanum og skipta út dæmisproxy-slóðinni. Stuðningur við streymi fer eftir handfaranum; stream-viðmótið eitt sér getur ekki sagt þér hvort handfarinn afhenti body-ið í skrefum.

Þegar svarið berst skaltu halda áfram að lesa takmarkaða hluta. Að breyta $body í streng safnar öllu body-inu aftur. Línuþáttari getur líka virst hanga á meðan hann bíður nýrrar línu, jafnvel þótt netbætin hafi borist. Þetta eru neyslutafir, svo að skipta um proxy fjarlægir þær ekki.

read_timeout takmarkar einstakar lesbíðir undir studdri stream-útfærslu. Það gefur endalausu straumi ekki tíu sekúndna heildarlíftíma. Meðhöndlaðu tímatakmörk, EOF og villur sérstaklega, og lokaðu body-inu þegar vinnslu lýkur eða henni er hætt.

Tengdir greinar