cURL not working sometimes and gives empty result
我用curl从另一个网站获取数据。有时显示数据,有时显示空结果
这是我的密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; |
可能您从curl_init调用了太多连接到一个IP地址,因此服务器会阻塞连接并导致开/关错误。
不接收任何内容可能是由于许多不同的原因中的一个或多个,您需要找出哪个原因。
在执行传输之后,在代码中使用
调查响应头。HTTP传输可以成功,不会返回任何错误,但可能只使用HTTP头响应,根本没有主体。然后,HTTP头可能包含有关原因的线索。也许这是您应该遵循的重定向,也许它需要HTTP身份验证,或者服务器指示临时服务器故障。
可以使用"wget"使用shell访问此内容。
1 2 3 4 5 6 7 8 | 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; } |
可能间歇性的故障是由于不稳定的DNS服务器造成的,即使它不是,使用谷歌的DNS服务器仍然会使您受益。请参阅:https://developers.google.com/speed/public-dns/docs/using
PHP中的curl在AWS EC2实例上返回空值
我也遇到过类似的问题,我通过确保php.in i文件中php5和apache2文件夹中的版本和设置相同来解决这个问题。如果不是这样,Apache2会尝试执行php.ini设置中设置的版本。还要确保安装了php5 libcurl。这也很重要。