【问题标题】:file_get_contents causing my server to hangfile_get_contents 导致我的服务器挂起
【发布时间】:2011-08-04 04:12:52
【问题描述】:

所以我的博客在我当前的 VPS 服务器上运行良好,但决定开始迁移到新的专用服务器,这就是我的麻烦开始的地方。

我注意到我的页面挂得很厉害,但它们只发生在我的博客上,而不是静态页面上。然后我意识到当我进入 wp-admin 部分时它们不会挂起,这使我能够对 file_get_contents 进行故障排除。一旦从我的主题中删除,博客就会完美加载。

所以,我不知道该怎么办。我的服务器目前有 APF 防火墙,但我加载到 SSH 并暂时禁用它。它正在运行 CSF,但我的管理公司切换到 APF 以查看是否会改变它。

在运行 CSF 时,它不起作用。 APF 运行,仍然没有工作。 APF 禁用,没有工作。

此时我什至不确定它是防火墙,但我不知道它还能是什么。 allow_url_fopen 在 php.ini 中设置为“on”,但我错过了什么吗?还有什么可以让服务器访问远程文件?

就像我说的,这在我的 VPS 服务器上工作正常,所以文件工作正常,我只是不知道可能导致挂断的原因。

有什么建议吗?谢谢!

【问题讨论】:

    标签: php file-get-contents


    【解决方案1】:

    尝试在 file_get_contents 上保持超时。

    // set socket timeout
    ini_set('default_socket_timeout', 60);
    
    // read page contents
    $response = file_get_contents("http://www.yoursite.com");
    

    【讨论】:

      【解决方案2】:

      如果您向异地域(例如 www.google.com)发出请求,您可能会发现速度变慢是由于 DNS 查找速度较慢。如果您提出这样的要求,我有一些建议:

      • 在 php 之外进行测试:通过 ssh 向同一 URL 发出 wget 或 cURL 请求,看看在下载之前是否需要一段时间才能解决。如果确实如此,则通常表明您遇到了网络问题。
      • 缓存响应:如果您请求的数据不经常更改,请尝试将响应缓存到文件或数据库。这将减少用户的加载时间,并提高总体性能。这可以像将内容写入本地磁盘上的文件并经常更新一样简单。

      Wordpress 主题会调用file_get_contents 似乎很奇怪。我会准确调查它在寻找什么,并确认您确实希望它加载远程文件。

      【讨论】:

      • 是的,我是把 file_get_contents 放入主题的人。由于我有一个站点网络,它可以远程添加我的网络等内容,因此我不必为了一个小改动就更改 50 多个博客。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多