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 आणि त्रुटी वेगळ्या पद्धतीने हाताळा, आणि प्रक्रिया संपल्यावर किंवा रद्द झाल्यावर बॉडी बंद करा.

संबंधित लेख