2012-10-04 71 views
-1

我從網站收集數據,有時似乎無法訪問(或者,也許它只是有時會出現問題的DNS主機)。 用PHP編寫的程序(用CLI推出)退出與錯誤:PHP cURL無法解析主機

Couldn't resolve host 'abcdef.com'

我想攔截這個錯誤,就像一個例外,因爲程序不能退出。

我試過一個「嘗試抓住」,但這不起作用。

我想避免使用外部守護進程的重新啓動程序...

謝謝您的幫助。使用 代碼:

編輯

function goToPage($url) { 
     $ch = curl_init($url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, realpath("./cookies/cookie.txt")); 
     $ret = curl_exec($ch); 
     if ($ret === FALSE) { 
      die(curl_error($ch)); 
     } 
     curl_close($ch); 

     $this->delay(); 

     return $ret; 
} 
+2

展一些代碼... –

+0

我們可以看到cURL代碼嗎? –

+0

不可能。 cURL **從不**拋出異常。你必須研究curl_error,理解它,然後拋出一個。 – Prasanth

回答

5

你確定它實際上是停止程序的執行?我的意思是,如果它不是一個例外......它不是一個例外。據我所知,cURL不會拋出任何異常或致命錯誤。你所看到的很可能只是一個常規的通知/警告。要弄清楚你是否有捲曲的錯誤,你可以使用的功能curl_errno()和curl_error():

if(curl_errno($ch)) 
{ 
    echo 'error:' . curl_error($ch); 
} 

或者,如果你想拋出一個自定義異常:

//you'll probably want to customize this further based on the type of error. 
if(curl_errno($ch)){ 
    throw new Exception(curl_error($ch)); 
} 
+0

我只是愚蠢的,我認爲這只是因爲我改變了我的代碼和使用死亡(curl_error($ ch)) –

+1

heh!別擔心,我們都做了愚蠢的事情:) –