file_get_contents导致我的服务器挂起

时间:2011-08-04 04:12:53

标签: php file-get-contents

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

我注意到我的网页严重悬挂,但它们只发生在我的博客上,而不是静态页面上。然后,当我进入wp-admin部分时,我意识到它们没有挂起,这让我可以解决file_get_contents问题。从我的主题中删除后,博客完全加载。

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

运行CSF后,它无效。 APF运行,仍然无法正常工作。 APF禁用,没有用。

我现在还不确定它是防火墙,但我不知道它还能是什么。在php.ini中,allow_url_fopen设置为'on',但是我错过了什么?还有什么允许服务器访问远程文件?

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

有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:1)

尝试在file_get_contents上保持超时。

// set socket timeout
ini_set('default_socket_timeout', 60);

// read page contents
$response = file_get_contents("http://www.yoursite.com");

答案 1 :(得分:0)

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

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

Wordpress主题调用file_get_contents似乎很奇怪。我会调查它正在查找的内容并确认您确实希望它加载远程文件。