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 ಮತ್ತು ದೋಷಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ನಿರ್ವಹಿಸಿ, ಮತ್ತು ಸಂಸ್ಕರಣೆ ಮುಗಿದಾಗ ಅಥವಾ ರದ್ದಾದಾಗ ಬಾಡಿಯನ್ನು ಮುಚ್ಚಿ.