我使用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;
答案 0 :(得分:3)
可能你从curl_init调用太多连接到一个IP地址,所以服务器阻止连接并导致开/关错误。
答案 1 :(得分:1)
没有收到任何内容可能是由于一个或多个原因造成的,你需要找出哪些内容。
在执行转移后,在代码中使用curl_error($ch)
,以查看curl是否告诉您有关问题的信息。
调查响应标头。 HTTP传输可以成功,不会返回任何错误,但可能只响应HTTP标头而根本没有响应。然后,HTTP标头可能包含有关原因的线索。也许它是您应该遵循的重定向,也许它需要HTTP身份验证,或者服务器可能指示临时服务器故障。
答案 2 :(得分:0)
Curl in PHP returns null on AWS EC2 instance
我有类似的问题,我通过确保PHP5和Apache2文件夹中的php.ini文件中的版本和设置相同来修复它。如果不是那么Apache2尝试执行php.ini设置中设置的版本。还要确保安装了PHP5-libcurl。它也很重要。
答案 3 :(得分:0)
间歇性故障可能是由于DNS服务器不稳定造成的,即使不是这样,您仍然可以从使用Google的DNS服务器中受益。 请参阅:https://developers.google.com/speed/public-dns/docs/using
答案 4 :(得分:0)
您可以使用' wget'使用shell访问此内容..
function wget($url){
//get contnet with wget since some sites are not allowed with curl or file_get_content requests
$content=`wget -O - $url`;
return $content;
}