getBody() ส่งคืนอินเทอร์เฟซสตรีมแม้ 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();

สิ่งนี้ใช้ไคลเอนต์ที่มีอยู่แล้ว สำหรับ HTTP endpoint สาธารณะ ให้เลือกที่อยู่จากรายการพร็อกซี HTTPและแทนที่ URL พร็อกซีตัวอย่าง การรองรับสตรีมมิ่งขึ้นอยู่กับแฮนเดลเลอร์ของมัน อินเทอร์เฟซสตรีมเพียงอย่างเดียวไม่สามารถบอกได้ว่าแฮนเดลเลอร์ส่ง body แบบเพิ่มทีละขั้นหรือไม่

เมื่อการตอบกลับมาถึง ให้อ่านส่วนที่จำกัดต่อไป การแปลง $body เป็นสตริงจะรวบรวม body ทั้งหมดอีกครั้ง ตัวแยกวิเคราะห์บรรทัดอาจดูเหมือนค้างขณะรอขึ้นบรรทัดใหม่ แม้ไบต์เครือข่ายจะมาถึงแล้ว สิ่งเหล่านี้คือความล่าช้าในการบริโภค ดังนั้นการเปลี่ยนพร็อกซีจะไม่กำจัดมัน

read_timeout จำกัดการรออ่านแต่ละครั้งภายใต้การใช้งานสตรีมที่รองรับ มันไม่ได้ให้ฟีดที่ไม่มีที่สิ้นสุดมีอายุรวมสิบวินาที จัดการ timeout, EOF และข้อผิดพลาดแยกจากกัน และปิด body เมื่อการประมวลผลสิ้นสุดหรือถูกยกเลิก

บทความที่เกี่ยวข้อง