Guzzle body stream இன்னும் buffer ஆகக்கூடியது ஏன்
Body interface, transport வழங்கல் மற்றும் உங்கள் சொந்த parser ஆகியவை தனித்தனியாக buffer செய்யலாம். stream-ஐ வெளிப்படையாகப் பயன்படுத்தி நுகர்வை படிப்படியாக வைத்திருங்கள்.
getBody() Guzzle ஏற்கனவே பதிலைப் பதிவிறக்கியிருந்தாலும் stream interface-ஐத் திருப்பித் தருகிறது. 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 பட்டியலில் இருந்து முகவரியைத் தேர்ந்தெடுத்து எடுத்துக்காட்டு proxy URL-ஐ மாற்றவும். Streaming ஆதரவு அதன் handler-ஐப் பொறுத்தது; stream interface மட்டும் handler body-ஐ படிப்படியாக வழங்கியதா என்பதைச் சொல்ல முடியாது.
பதில் வந்ததும், வரையறுக்கப்பட்ட பகுதிகளைத் தொடர்ந்து படியுங்கள். $body-ஐ string ஆக மாற்றுவது முழு body-ஐ மீண்டும் சேகரிக்கிறது. நெட்வொர்க் பைட்டுகள் வந்திருந்தாலும், புதிய வரிக்காகக் காத்திருக்கும்போது line parser தேங்கியதுபோல் தோன்றலாம். இவை நுகர்வு தாமதங்கள், எனவே proxy-ஐ மாற்றினால் அவை நீங்காது.
read_timeout ஆதரிக்கப்படும் stream செயலாக்கத்தின் கீழ் தனிப்பட்ட வாசிப்பு காத்திருப்புகளை வரம்பிடுகிறது. இது முடிவில்லாத feed-க்கு பத்து வினாடிகள் மொத்த ஆயுளை வழங்காது. Timeout, EOF மற்றும் பிழைகளைத் தனித்தனியாகக் கையாளுங்கள், செயலாக்கம் முடிந்ததும் அல்லது ரத்து செய்யப்பட்டதும் body-ஐ மூடுங்கள்.