2012-09-26 12 views
5

私のPHPコードでlibcurlがpollコールで無期限にスタックされているようです。プロセスidにstraceを実行したとき、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 0以外の値に設定すると、curlがタイムアウトして失敗するようになります。

関連する問題