Guzzle بەدەن ئېقىمى نېمە ئۈچۈن يەنىلا بۇففېرلىنىدۇ
بەدەن كۆرۈنمە يۈزى، يۆتكەش يوللاش ۋە ئۆزىڭىزنىڭ تەھلىل قىلغۇچىسى مۇستەقىل بۇففېرلىيالايدۇ. stream نى ئوچۇق ئىشلىتىڭ ۋە ئىستېمالنى تەدرىجىي ساقلاڭ.
getBody() Guzzle ئاللىبۇرۇن جاۋابنى چۈشۈرۈپ بولغان بولسىمۇ، ئېقىم كۆرۈنمە يۈزىنى قايتۇرىدۇ. ئالدىنقى proxy ئارقىلىق تەدرىجىي تور يوللاشنى تەلەپ قىلىش ئۈچۈن، تەلەپتە stream نى تەڭشەڭ:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
بۇ مەۋجۇت خېرىدارنى ئىشلىتىدۇ؛ ئاممىۋى HTTP ئاخىرقى نۇقتىسى ئۈچۈن HTTP proxy تىزىملىكىدىن ئادرېس تاللاپ، مىسالدىكى proxy URL نى ئالماشتۇرۇڭ. ئېقىم قوللىشى ئۇنىڭ بىر تەرەپ قىلغۇچىسىغا باغلىق؛ پەقەت ئېقىم كۆرۈنمە يۈزى بىر تەرەپ قىلغۇچىنىڭ بەدەننى تەدرىجىي يوللىغان-يوللىمىغانلىقىنى ئېيتالمايدۇ.
جاۋاب كەلگەندىن كېيىن، چەكلەنگەن قىسىملارنى ئوقۇشنى داۋاملاشتۇرۇڭ. $body نى تىزىقچە قىلىپ ئايلاندۇرۇش پۈتۈن بەدەننى قايتا يىغىدۇ. قۇر تەھلىل قىلغۇچى تور بايتلىرى كەلگەن بولسىمۇ، يېڭى قۇرنى ساقلاپ توختاپ قالغاندەك كۆرۈنەلەيدۇ. بۇلار ئىستېمال كېچىكىشى، شۇڭا proxy نى ئالماشتۇرۇش ئۇلارنى يوقىتالمايدۇ.
read_timeout قوللانغان ئېقىم يولغا قويۇشى ئاستىدا شەخسىي ئوقۇش ساقلىشىنى چەكلەيدۇ. ئۇ چەكسىز ئېقىمغا ئون سېكۇنت ئومۇمىي ئۆمۈر بەرمەيدۇ. ۋاقىت چېكى، EOF ۋە خاتالىقلارنى ئايرىم بىر تەرەپ قىلىڭ، بىر تەرەپ قىلىش ئاخىرلاشقاندا ياكى بىكار قىلىنغاندا بەدەننى تاقاڭ.