2009-12-20 25 views
8

Có ai biết lý do tại sao cURL dưới php5 có thể chết tiệt đến mức thất bại ngay cả khi hết thời gian chờ 45 giây, tải xuống một tệp kb trên máy chủ speedO'light không?cURL thực sự chậm

Mã này là ở đây theo yêu cầu (mặc dù tôi upped timeouts thậm chí nhiều hơn cho kịch bản không để thất bại trong thực hiện và thay đổi useragent để Mozilla/4.0 từ Chrome ban đầu):

$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

đăng mã của bạn hoặc phần đó trong mã – dusoft

+0

Xin chào và chào mừng bạn đến với trang web. Bạn đang sử dụng HTTP 1.1 hoặc 1.0? –

+0

ok, đây là mã và @Alix Axel, theo như tôi biết cURL gửi yêu cầu HTTP 1.1 theo mặc định, tôi không thay đổi điều đó – mangefort

Trả lời

7

hmm, có thể là một vài điều, có thể một số lượng tiết sẽ có một lỗi của một số loại

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)); 

Đôi khi user agent sẽ thay đổi như thế nào một trang web đáp ứng, có thể cần phải làm điều gì đó như:

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

Cảm ơn, tôi cũng sẽ thử. – mangefort

+0

mẹo tác nhân người dùng - nội dung cụ thể – Mojowen

2

Khi tôi đặt CONNECTtimeout, tôi nhận được phản hồi nhanh hơn. Bao gồm tùy chọn này:

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,1) 
Các vấn đề liên quan