我使用cURL从另一个网站获取数据 . 有时它显示数据,有时显示空的结果
这是我的代码
function get_data($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$agent=$_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch,CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('www.example.com');
echo $returned_content;
5 回答
Curl in PHP returns null on AWS EC2 instance
我有类似的问题,我通过确保PHP5和Apache2文件夹中的php.ini文件中的版本和设置相同来修复它 . 如果不是那么Apache2尝试执行php.ini设置中设置的版本 . 还要确保安装了PHP5-libcurl . 它也很重要 .
可能是间歇性故障是由于片状DNS服务器造成的,即使它还没有从使用谷歌的DNS服务器中受益..参见:https://developers.google.com/speed/public-dns/docs/using
您可以使用'wget'来使用shell访问此内容 .
可能你从curl_init调用太多连接到一个IP地址,因此服务器阻止连接并导致开/关错误 .
没有收到任何内容可能是由于一个或多个原因造成的,你需要找出哪些内容 .
在执行传输后在代码中使用
curl_error($ch)
,以查看curl是否告诉您有关问题的信息 .调查响应标头 . HTTP传输可以成功并且不会返回任何错误,但可能只响应HTTP标头而根本没有响应 . 然后,HTTP标头可能包含有关原因的线索 . 也许它是你应该遵循的重定向,也许它需要HTTP身份验证,或者服务器可能指示临时服务器故障 .