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 અને ભૂલો અલગથી સંભાળો, અને પ્રોસેસિંગ સમાપ્ત થાય અથવા રદ થાય ત્યારે બોડી બંધ કરો.