Guzzle-ийн биеийн урсгал яагаад буферлэгдсээр байж болох вэ
Биеийн интерфэйс, тээврийн хүргэлт болон таны өөрийн задлагч нь бие даан буферлэх боломжтой. stream-ийг тодорхой ашиглаж, хэрэглээг аажмаар байлгаарай.
getBody() нь Guzzle хариуг аль хэдийн татаж авсан байсан ч урсгалын интерфэйс буцаана. Дамжуулагч проксигоор аажмаар сүлжээний хүргэлт хүсэхийн тулд хүсэлт дээр stream тохируулна уу:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
Энэ нь одоо байгаа клиентийг ашигладаг; нийтийн HTTP төгсгөлийн цэгийн хувьд HTTP прокси жагсаалтаас хаяг сонгож, жишээ прокси URL-ийг соль. Урсгалын дэмжлэг нь түүний боловсруулагчаас хамаарна; зөвхөн урсгалын интерфэйс нь боловсруулагч биеийг аажмаар хүргэсэн эсэхийг хэлж чадахгүй.
Хариу ирсний дараа хязгаарлагдмал хэсгүүдийг үргэлжлүүлэн уншаарай. $body-ийг мөр болгон хөрвүүлэх нь бүх биеийг дахин цуглуулдаг. Мөрийн задлагч нь сүлжээний байтууд ирсэн ч шинэ мөр хүлээж гацсан мэт харагдаж болно. Эдгээр нь хэрэглээний саатал тул прокси солих нь тэдгээрийг арилгахгүй.
read_timeout дэмжигдсэн урсгалын хэрэгжилтийн дор хувь хүний унших хүлээлгийг хязгаарладаг. Энэ нь төгсгөлгүй урсгалд нийт арван секундын нас өгдөггүй. Тайм-аут, EOF болон алдааг тусад нь зохицуулж, боловсруулалт дуусах эсвэл цуцлагдах үед биеийг хаа.