2016-10-31 15 views
6

नीचे दी गई स्क्रिप्ट अनिश्चित काल तक संचालित होगी और php myscript.php का उपयोग करके शुरू की जाएगी।curl_close() का उपयोग कब किया जाना चाहिए?

http://example.com/longpolling.php केवल तभी जवाब देगा यदि उसके पास php myscript.php पर संवाद करने के लिए कुछ है, और नीचे कर्ल अनुरोध लंबे समय तक चलने से पहले टाइमआउट होगा। Php इसकी समय सीमा तक पहुंच जाएगा।

क्या मुझे प्रत्येक लूप को कर्ल कनेक्शन बंद करना और दोबारा खोलना चाहिए, या इसे अनिश्चित काल तक खोलना चाहिए।

<?php 
// php myscript.php 
$options=[ 
    CURLOPT_URL=>'http://example.com/longpolling.php', 
    CURLOPT_RETURNTRANSFER=>true, 
    CURLOPT_CONNECTTIMEOUT => 300, 
    CURLOPT_TIMEOUT=> 300 
]; 
$ch  = curl_init(); 
curl_setopt_array($ch, $options); 
while (true) { 
    $rsp = curl_exec($ch); 
    // Do something 
    //curl_close($ch); //should I close and reopen? 
} 
+0

यदि आप लूप के दौरान 'curl_close' का उपयोग करते हैं, तो आपको फिर से कर्ल प्रारंभ करना होगा। क्योंकि curl_init, curl_setopt(), curl_exec(), और curl_close() फ़ंक्शंस के साथ उपयोग के लिए एक नया सत्र प्रारंभ करता है और एक curl हैंडल देता है। – Kumar

+0

@ कुमार सटीक रूप से। क्या ऐसा करने के लिए कोई स्मृति/प्रदर्शन/विश्वसनीयता कारण हैं? – user1032531

+0

@apokryfos मैं यह नहीं कह रहा हूं कि ऐसा करने का अधिकार है, लेकिन ऐसा लगता है कि यह इसे खोलने के लिए सही काम करता है। क्या यह दस्तावेज है कि यह "एक अनुरोध को संभालना है"? – user1032531

उत्तर

2

यूआरएल एक ही सर्वर संभाल पुन: उपयोग प्रदर्शन में वृद्धि को बढ़ावा मिलेगा पर हैं। curl सर्वर पर प्रत्येक HTTP अनुरोध के लिए एक ही टीसीपी कनेक्शन का पुन: उपयोग करेगा।

Here इस मुद्दे के लिए भी एक अच्छा बेंचमार्क है।

0

आप बाहर निकलने की स्थिति खो रहे हैं। मान लिया जाये कि यह रिमोट स्क्रिप्ट से एक प्रतिक्रिया है, अपने कोड होना चाहिए:

<?php 
// php myscript.php 
$options=[ 
    CURLOPT_URL=>'http://example.com/longpolling.php', 
    CURLOPT_RETURNTRANSFER=>true, 
    CURLOPT_CONNECTTIMEOUT => 300, 
    CURLOPT_TIMEOUT=> 300 
]; 
$ch  = curl_init(); 
curl_setopt_array($ch, $options); 
$rsp = false; 
while (!$rsp) { 
    $rsp = curl_exec($ch); 
} 
curl_close($ch); 
// Do something 
+1

जबकि (! आरएसपी) => जबकि (! $ आरएसपी) – Fky

+0

वास्तव में $ गुम है। चीयर्स। –

संबंधित मुद्दे