2011-11-02 36 views
8

इस कोड को हमेशा विफल रहता है (यानी, $result बूलियन है false):कर्ल टाइमआउट हमेशा विफल रहता है?

 $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $path); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $curl_version = curl_version(); 

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 999); 

    $result = curl_exec($ch); 
    curl_close($ch); 

इस कोड को हमेशा सफल होता है (यानी, $result हेडर युक्त एक स्ट्रिंग है):

 $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $path); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    $curl_version = curl_version(); 

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000); 

    $result = curl_exec($ch); 
    curl_close($ch); 

फर्क सिर्फ इतना है कि है मैंने टाइमआउट को 99 9एमएस से 1000 एमएमएस में बदल दिया है।

यह या तो याद किए गए कनेक्शन टाइमआउट के लिए प्रलेखन में कर्ल या किसी प्रकार का न्यूनतम होना चाहिए। जो यह है? मेरा पैसा उत्तरार्द्ध पर है।

उत्तर

12

से: http://www.php.net/manual/en/function.curl-setopt.php

कनेक्ट करते समय मिलीसेकेंड की संख्या प्रतीक्षा करने के लिए। अनिश्चित काल तक प्रतीक्षा करने के लिए 0 का प्रयोग करें। यदि libcurl मानक सिस्टम नाम रिज़ॉल्वर का उपयोग करने के लिए बनाया गया है, तो कनेक्ट का वह हिस्सा अभी भी एक दूसरे की अनुमति के न्यूनतम टाइमआउट के साथ टाइमआउट के लिए पूर्ण-सेकंड रिज़ॉल्यूशन का उपयोग करेगा।

+0

वाह, मुझे यह कैसे याद आया ?! – Trott

+0

ठीक है, मैंने इसे प्रलेखन में देखा लेकिन मुझे वास्तव में समझ में नहीं आता कि इसका क्या अर्थ है और मैं इसे 1000 से छोटे मूल्य के साथ कैसे काम कर सकता हूं। कोई भी मदद जो आप मुझे दे सकते हैं उसकी सराहना की जाएगी, धन्यवाद! –

+0

आपको '--enable-threaded-resolver' का उपयोग करके, अपने लिए libcurl संकलित करना होगा और उसके बाद PHP के लिए कर्ल एक्सटेंशन संकलित करना होगा। –

3

इससे निपटने का एक और तरीका CURLOPT_NOSIGNAL विकल्प CURLOPT_CONNECTTIMEOUT_MS के अतिरिक्त 1 सेट करना होगा। अधिक जानकारी के लिए http://curl.haxx.se/libcurl/c/CURLOPT_NOSIGNAL.html देखें।

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