ເປັນຫຍັງ body stream ຂອງ Guzzle ຍັງສາມາດຖືກ buffer
ອິນເຕີເຟສ body, ການສົ່ງຂໍ້ມູນຜ່ານ transport ແລະ parser ຂອງທ່ານເອງ ສາມາດ buffer ໄດ້ຢ່າງເປັນເອກະລາດ. ໃຊ້ stream ຢ່າງຊັດເຈນ ແລະ ຮັກສາການບໍລິໂພກໃຫ້ເປັນຂັ້ນຕອນ.
getBody() ສົ່ງຄືນອິນເຕີເຟສ stream ເຖິງແມ່ນວ່າ Guzzle ໄດ້ດາວໂຫລດຄຳຕອບແລ້ວ. ເພື່ອຂໍການສົ່ງເຄືອຂ່າຍເປັນຂັ້ນຕອນຜ່ານ forward proxy, ຕັ້ງ stream ໃນຄຳຂໍ:
$response = $client->request('GET', 'https://example.com/stream', [
'proxy' => 'http://proxy.example:8080',
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
ອັນນີ້ໃຊ້ client ທີ່ມີຢູ່ແລ້ວ; ສຳລັບ HTTP endpoint ສາທາລະນະ, ເລືອກທີ່ຢູ່ຈາກ ລາຍຊື່ HTTP proxy ແລະ ປ່ຽນ URL proxy ຕົວຢ່າງ. ການສະໜັບສະໜູນ streaming ຂຶ້ນກັບ handler ຂອງມັນ; ອິນເຕີເຟສ stream ຢ່າງດຽວບໍ່ສາມາດບອກທ່ານໄດ້ວ່າ handler ສົ່ງ body ເປັນຂັ້ນຕອນຫຼືບໍ່.
ເມື່ອຄຳຕອບມາຮອດ, ສືບຕໍ່ອ່ານສ່ວນທີ່ຈຳກັດ. ການປ່ຽນ $body ເປັນ string ຈະເກັບ body ທັງໝົດຄືນອີກ. ຕົວແຍກແຖວອາດເບິ່ງຄືຄ້າງຂະນະລໍຖ້າແຖວໃໝ່ ເຖິງແມ່ນວ່າ byte ເຄືອຂ່າຍມາຮອດແລ້ວ. ນີ້ແມ່ນຄວາມຊັກຊ້າຂອງການບໍລິໂພກ, ດັ່ງນັ້ນການປ່ຽນ proxy ຈະບໍ່ກຳຈັດມັນ.
read_timeout ຈຳກັດການລໍຖ້າອ່ານແຕ່ລະຄັ້ງພາຍໃຕ້ການຈັດຕັ້ງ stream ທີ່ຮອງຮັບ. ມັນບໍ່ໃຫ້ feed ທີ່ບໍ່ມີທີ່ສິ້ນສຸດມີອາຍຸລວມສິບວິນາທີ. ຈັດການ timeout, EOF ແລະ ຂໍ້ຜິດພາດແຍກຕ່າງຫາກ, ແລະ ປິດ body ເມື່ອການປະມວນຜົນສິ້ນສຸດ ຫຼື ຖືກຍົກເລີກ.