2012-09-26 60 views
5

我的php代碼中的libcurl似乎被無限期地卡在poll調用中。當我對進程編號進行了一次掃描時,libcurl停留在POLLIN超時

[[email protected] ~]$ sudo strace -p 19559 
Process 19559 attached - interrupt to quit 
poll([{fd=7, events=POLLIN}], 1, 1000) = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 0)  = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 1000) = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 0)  = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 1000) = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 0)  = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 1000) = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 0)  = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 1000) = 0 (Timeout) 

這種情況會無限期地持續下去。 fd 7顯示在/ proc/19559/fd中,因爲

lrwx------ 1 root root 64 Sep 19 19:44 7 -> socket:[335178801] 

有人可以告訴我爲什麼會發生這種情況。我能做些什麼來使libcurl在超時時退出

+2

對於使用'strace'來說+1 ...如果只有更多人做了。 – Leigh

回答

5

curl_setopt選項CURLOPT_CONNECTTIMEOUT如果設置爲非零值,將使curl超時失敗。