6

我使用 cURL 从另一个网站获取数据。有时显示数据,有时显示空结果

这是我的代码

    函数 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);
        返回$数据;
    }
    $returned_content = get_data('www.example.com');
    回声 $returned_content;

4

5 回答 5

3

可能您从 curl_init 调用了太多连接到一个 IP 地址,因此服务器阻止了连接并导致开/关错误。

于 2016-12-30T02:40:22.500 回答
2

没有收到任何内容可能是由于许多不同原因中的一个或多个,您需要弄清楚是哪一个。

  1. 在执行传输后在您的代码中使用curl_error($ch),以查看 curl 是否告诉您问题。

  2. 调查响应标头。HTTP 传输可以成功并且不返回任何错误,但可能只响应 HTTP 标头而根本没有正文。然后,HTTP 标头可能包含有关原因的线索。也许这是您应该遵循的重定向,也许它需要 HTTP 身份验证,或者服务器指示临时服务器故障。

于 2018-04-27T09:04:22.277 回答
0

间歇性故障可能是由于 DNS 服务器不稳定,即使不是,您仍然可以从使用 Google 的 DNS 服务器中受益。请参阅: https ://developers.google.com/speed/public-dns/docs/使用

于 2016-06-27T13:58:17.173 回答
0

PHP 中的 Curl 在 AWS EC2 实例上返回 null

我有类似的问题,我通过确保 PHP5 和 Apache2 文件夹中的 php.ini 文件中的版本和设置相同来修复它。如果不是,那么 Apache2 会尝试执行在 php.ini 设置中设置的版本。还要确保安装了 PHP5-libcurl。它也很重要。

于 2015-08-27T19:06:01.063 回答
0

解决方案

确保没有任何变量或 url 空间。像“$user_name = "Lokman Hosen"”。你必须给 urldecode "$user_name = "Lokman_Hosen"" 或 "$user_name = "Lokman%20Hosen""。您可以使用

urldecode()

删除空间的功能。现在 cURL 不允许任何空间。

于 2022-01-18T17:08:25.913 回答