php用curl抓取网页问题

封装了一个curl抓取网页的函数,在本地测没问题;放到测试服务器上后,如果通过浏览器访问
执行,大部分时候函数返回的HTTP状态码返回0,错误信息`Error:name lookup timed out`,极其偶像的情况下返回200成功;但如果直接在测试服务器上直接用命令行执行,100%成功。 代码如下:
static public function curlGet$url, $data = array, $header = array, $timeout = 3, $port = 80 { $is_ssl = substr$url, 0, 5 == https ? 1 : 0; $ch = curl_init; if !empty$data { $data = is_array$data?http_build_query$data: $data; $url .= strpos$url,?? &: "?" . $data; } curl_setopt$ch, CURLOPT_URL, $url; curl_setopt$ch, CURLOPT_RETURNTRANSFER, true; curl_setopt$ch, CURLOPT_CUSTOMREQUEST, GET; curl_setopt$ch, CURLOPT_FOLLOWLOCATION,1; //是否抓取跳转后的页面 curl_setopt$ch, CURLOPT_CONNECTTIMEOUT, 5; curl_setopt$ch, CURLOPT_TIMEOUT, $timeout; curl_setopt$ch, CURLOPT_POST, 0; //curl_setopt$ch, CURLOPT_PORT, $port; curl_setopt$ch, CURLOPT_HTTPHEADER, $header; curl_setopt$ch, CURLOPT_REFERER, $url; // curl_setopt$ch, CURLOPT_USERAGENT, self::url2useragent$url; if$is_ssl{ curl_setopt$ch, CURLOPT_SSL_VERIFYPEER, false; // 跳过证书检查 curl_setopt$ch, CURLOPT_SSL_VERIFYHOST, true; // 从证书中检查SSL加密算法是否存在 } $result = array; $result[result] = curl_exec$ch; $result[http_code] = curl_getinfo$ch,CURLINFO_HTTP_CODE; if 0 != curl_errno$ch { $result[error] = "Error:
" . curl_error$ch; } curl_close$ch; return $result; }
我个人感觉和代码应该关系不大,不知是哪的问题。望各路大神不吝赐教,指点迷津,不胜
感激。

1.超时时间设置大点;
2.重启服务器;
3.检查DNS是否正常

你服务器抽风了

在服务器上面ping 下你的域名地址
服务器自带curl测试一下

发表评论

电子邮件地址不会被公开。 必填项已用*标注