2012-10-04 70 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!别担心,我们都做了愚蠢的事情:) –