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, പിശകുകൾ എന്നിവ വെവ്വേറെ കൈകാര്യം ചെയ്ത്, പ്രോസസ്സിംഗ് അവസാനിക്കുകയോ റദ്ദാക്കുകയോ ചെയ്യുമ്പോൾ ബോഡി അടയ്ക്കുക.