【问题标题】:file_get_contents hangsfile_get_contents 挂起
【发布时间】:2012-06-22 06:41:32
【问题描述】:

我正在使用 Google 地理编码服务。 我有一个调用 Google Maps API 并接收 JSON 数据的 PHP 应用程序。 调用 Google Maps 主机的功能会挂起,直到超时,但只有当我推送到 Godaddy 虚拟专用服务器时。

我已经 ssh 进入服务器并编辑了 php.ini 我将“安全模式”更改为“关闭”

我收到此错误消息:

消息: 文件获取内容(http://maps.googleapis.com/maps/api/geocode/json?address=xYxY&sensor=false): 无法打开流:连接超时

这在我的 WAMP 服务器中运行良好,但在实时服务器上失败。任何想法为什么?

【问题讨论】:

  • Google 可能在 Ur live 服务器中设置了防火墙
  • 致电您的 ISP 并询问他们。这是最简单的方法。 @Sergey 是对的,这可能是防火墙问题。许多提供商不允许此类连接。
  • 如果您尝试使用wget 来获取页面,您会得到任何其他信息吗?命令是:wget http://maps.googleapis.com/maps/api/geocode/json?address=xYxY&sensor=false

标签: php google-maps


【解决方案1】:

我找到了答案。一周过去了,现在?我希望其他人找到这个解决方案。 GoDaddy 的虚拟专用服务器启用了 ipv6,但谷歌地图 API 却没有。所以告诉 Curl 强制执行 v4 请求,如下所示:

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

部分归功于我发现此信息的博客:

http://www.businesscorner.co.uk/disable-ipv6-in-curl-and-php/

【讨论】:

  • 太棒了。我发现了几个关于这个问题的错误报告,但你是第一个真正给出解决方案的人。
【解决方案2】:

您可以尝试通过一个 IP 版本连接,然后在第一次尝试失败时切换到另一个版本,而不是仅仅禁用 IPv6。这使您的实现对您和远程端的临时路由问题更加健壮。

您可以在file_get_contents() 中通过使用inet6 或inet 将连接绑定到接口来获得此行为,然后如果第一次尝试返回FAIL,则尝试其他地址系列。我为任何感兴趣的人写了how to make file_get_contents() more routing-robust and dual-stack。如果您更愿意走这条路线,我还将向您展示如何强制连接使用 IPv4 或 IPv6。

【讨论】:

    【解决方案3】:

    使用 curl 获取外部数据。由于安全风险,许多共享服务器阻止使用 file_get_contents 获取外部数据 (http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen)。

    网上有很多 curl 的例子。

    【讨论】:

    • 从 curl 开始。经过数小时的挫败后切换到file_get_contents。现在我回到卷曲。但问题依然存在。使用 curl OR file_get_contents() 我可以从其他服务器加载数据。我无法调用 Google Maps API。我的虚拟专用服务器上最大时间的处理时间(120 秒)。立即在我的本地机器上工作,立即与其他测试 url 一起工作。只是谷歌地图挂了。
    • 好的 - 我的答案不是解决方案 - 我很快就会删除。这可能是 GoDaddy 防火墙/路由问题,或者是谷歌主动阻止呼叫 - 尽管我原以为两者都会立即超时。对流浪汉感到抱歉(但仍然建议您继续使用 curl 以备将来开发)。
    • 谢谢 Robbie,我已经搬回了 CuRL,我认为你是对的,因为它是更好的方法。
    【解决方案4】:

    检查您的网络。 Google 不会阻止此类请求。

    检查here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2013-06-30
      • 2014-11-16
      • 2015-03-12
      • 2023-03-19
      相关资源
      最近更新 更多