2009-12-20 17 views
8

क्या कोई जानता है कि php5 के नीचे cURL क्यों धीमा धीमा हो सकता है, 45s टाइमआउट पर भी असफल हो सकता है, एक गति पर कुछ केबी फ़ाइल डाउनलोड कर रहा है ओलाइट सर्वर?curl वास्तव में धीमा

अनुरोध किया (हालांकि मैं समय समाप्ति और भी अधिक बढ़ा स्क्रिप्ट निष्पादन के दौरान विफल करने के लिए नहीं है और प्रारंभिक क्रोम से मोज़िला/4.0 UserAgent परिवर्तित) कोड यहाँ है:

$ch = curl_init('http://www.somesite.com/' . $key); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.somesite.com/somereferer/'); 
// curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.39 Safari/530.5'); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0'); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 600); 
+2

पोस्ट अपने कोड या कोड – dusoft

+0

हैलो में वह हिस्सा है, और साइट के लिए स्वागत करते हैं। क्या आप HTTP 1.1 या 1.0 का उपयोग कर रहे हैं? –

+0

ठीक है, यहां कोड है, और @ एलिक्स एक्सेल, जहां तक ​​मुझे पता है कि curl डिफ़ॉल्ट रूप से HTTP 1.1 अनुरोध भेजता है, मैंने – mangefort

उत्तर

7

हम्म, एक हो सकता है कुछ बातें, हो सकता है कुछ वर्बोज़ उत्पादन किसी तरह

curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); // some output will go to stderr/error_log 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$response = curl_exec($ch); 
$errStr = curl_error($ch); 
$errNum = curl_errno($ch); 
$head = curl_getinfo($ch, CURLINFO_HEADER_OUT); 
$ci = curl_getinfo($ch); 
print_r(array($head, $errStr, $errNum, $ci)); 

कभी कभी उपयोगकर्ता एजेंट बदल जाएगा कि कैसे एक साइट प्रतिक्रिया करता है, ऐसा करने के लिए आवश्यकता हो सकती है की एक त्रुटि होगा कुछ की तरह:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101'); 
+0

को नहीं बदला धन्यवाद, मैं भी कोशिश करूंगा। – mangefort

+0

कि उपयोगकर्ता एजेंट टिप - ठोस सामान – Mojowen

2

जब मैं एक CONNECTtimeout सेट करता हूं, तो मुझे तेज प्रतिक्रिया मिलती है। इस विकल्प सहित:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1) 
संबंधित मुद्दे