-1

我从有时似乎无法访问的网站收集数据(或者,也许只是 DNS 主机有时会出现一些问题)。用 PHP 编写的程序(使用 CLI 启动)退出并出现错误:

无法解析主机“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;
}
4

1 回答 1

5

你确定它实际上是在停止你的程序的执行吗?我的意思是,如果它不是异常......它不是异常。据我所知,cURL 不会抛出任何异常或致命错误。您所看到的很可能只是常规通知/警告。要确定是否有 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) );
}
于 2012-10-04T15:13:22.093 回答