Kwa nini mtiririko wa mwili wa Guzzle bado unaweza kuwekwa kwenye bafa
Kiolesura cha mwili, uwasilishaji wa usafiri na kichanganuzi chako mwenyewe vinaweza kuweka kwenye bafa kwa kujitegemea. Tumia stream waziwazi na uweke matumizi kuwa ya hatua kwa hatua.
getBody() hurudisha kiolesura cha mtiririko hata Guzzle ikiwa imeshapakua jibu. Ili kuomba uwasilishaji wa mtandao wa hatua kwa hatua kupitia proksi ya mbele, weka stream kwenye ombi:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
Hii hutumia mteja aliye tayari; kwa kituo cha HTTP cha umma, chagua anwani kutoka orodha ya proksi za HTTP na ubadilishe URL ya proksi ya mfano. Usaidizi wa utiririshaji hutegemea kishikiliaji chake; kiolesura cha mtiririko peke yake hakiwezi kukuambia kama kishikiliaji kiliwasilisha mwili hatua kwa hatua.
Jibu linapofika, endelea kusoma sehemu zenye mipaka. Kubadilisha $body kuwa mfuatano wa herufi hukusanya mwili wote tena. Kichanganuzi cha mistari kinaweza pia kuonekana kimekwama kikisubiri mstari mpya, ingawa baiti za mtandao zimefika. Hizi ni ucheleweshaji wa matumizi, kwa hivyo kubadilisha proksi hakutaziondoa.
read_timeout hupunguza kingo za kusoma za mtu binafsi chini ya utekelezaji wa mtiririko unaotumika. Haipi mlisho usio na mwisho maisha ya jumla ya sekunde kumi. Shughulikia muda wa mwisho, EOF na hitilafu kwa tofauti, na funga mwili usindikaji unapokamilika au kughairiwa.