2014-01-27 88 views
2

我有一個php腳本,使用curl從外部網站獲取數據,然後在三分鐘後重新加載自身,獲取新數據並顯示更新。它的工作正常,但如果有網絡故障,並且我認爲它是curl沒有得到響應,php只是掛起而沒有返回錯誤或任何東西。這些懸掛過程需要手動終止。Php處理不負責任的捲曲

我該如何處理這種情況?調整捲曲選項?修改php腳本,它看着無反應curl?或者通過ajax處理瀏覽器中的所有內容,包括解僱一個殺死掛起的php進程的腳本?


解決方案:我已經添加

curl_setopt($ch, CURLOPT_FAILONERROR = true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 

我捲曲並增加了一個捕捉這些錯誤,我的反應檢查的一部分。從概念上講,這只是需要的,CURLOPT_CONNECTTIMEOUT似乎不是必需的,因爲我已經在發生錯誤時設置了重新加載。

它與手動斷開連接,但我還沒有看到腳本如何處理現實生活中的網絡故障。應該沒問題。

+0

檢查這個http://stackoverflow.com/questions/11297320/using-a-try-catch-with-curl-in-php – Naeem

+0

添加自定義異常類的錯誤處理程序,把一個嘗試catch阻止捲髮。 – DanFromGermany

回答

1

要處理網絡問題,請使用CURLOPT_CONNECTTIMEOUT選項來定義幾秒鐘。它將等待連接到目標主機的給定時間量。

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 

而且使用CURLOPT_TIMEOUT選項來定義你想要讓你的特定操作捲曲的秒數。如果目標服務器不釋放連接,這將會很有幫助。

curl_setopt($ch, CURLOPT_TIMEOUT, 30);