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 र त्रुटिहरू अलग-अलग व्यवस्थापन गर्नुहोस्, र प्रशोधन सकिएपछि वा रद्द भएपछि बडी बन्द गर्नुहोस्।