【问题标题】:PHP file_get_contents error 503PHP file_get_contents 错误 503
【发布时间】:2018-02-04 10:57:00
【问题描述】:

我得到了错误

“503 服务暂时不可用”

为了我的电话

$url = "https://www.okex.com/api/v1/ticker.do?symbol=ltc_btc";
  $page = json_decode(file_get_contents($url),true);
  var_dump($page);

PHP 文件获取内容

函数,但是当我将 url 直接写入浏览器时,我可以看到该页面,它们是否仅阻止 file_get_contents 函数或者这是如何工作的?因为如果他们阻止了我的 IP,我也无法使用我的浏览器访问该网站,或者?

这是对 APi 服务器的调用,它会返回 json。

【问题讨论】:

  • 它说 “在访问 okex.com 之前检查您的浏览器”;所以服务器拒绝你的 file_get_contents 。因此请改用cURL
  • 但是为什么当我直接在浏览器中编写它时服务器允许我调用 url 但使用 PHP file_get_contents 函数它不起作用?您确定使用 cURL 服务器不会再次阻止我吗?并且使用 cURL 也会产生性能问题吗?因为 file_get_contents 耗电少?
  • 不,反过来:curl 通常比 file_get_contents

标签: php


【解决方案1】:

您的网页更有可能有重定向,file_get_contents() 无法处理,但浏览器可以。

所以解决方案是改用curl,它能够处理这些情况(例如,使用 CURLOPT_FOLLOWLOCATION 选项)。

另请参阅以下问题:

这是一个可以轻松替换的 sn-p(基于官方文档中的示例):

function curl_get_file_contents($URL)
    {
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($c, CURLOPT_URL, $URL);
        $contents = curl_exec($c);
        curl_close($c);

        if ($contents) return $contents;
        else return FALSE;
    }

【讨论】:

  • 好的,谢谢。您知道使用 cURL 或 file_get_contents 之间是否存在性能差异吗?因为我有一个想法,我确实读过一些想法,比如说 file_get_contents 使用更少的系统电源。
  • 不,正如我上面所说。 curl 通常比 file_get_contents 更快、更稳定。它是 PHP 中发出 http 请求的标准方法。 file_get_contents() 的唯一好处是它更易于使用,但我从未听说有人声称它使用的资源更少。
  • 也许我理解错了,我读的是这条评论“file_get_contents() 是将文件内容读入字符串的首选方法。如果支持,它将使用内存映射技术您的操作系统以提高性能。”
  • 是的,但此注释仅适用于本地计算机上的文件,不适用于远程文件。正如它所说的“受您的操作系统支持”
  • 我会这样做,只要我有时间交换我的所有代码,那么我会看到结果,如果这次它与 cURL 一起工作,那么我也将其标记为已完成。我之前没有在这里将我的任何问题标记为已完成,但无论如何我会找到那个按钮。
猜你喜欢
  • 2015-07-05
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2013-06-12
  • 2013-10-25
  • 2020-07-05
  • 2018-01-12
  • 2012-01-18
相关资源
最近更新 更多