2011-08-04 46 views
1

因此,我的博客在我的当前VPS服务器上运行正常,但决定开始迁移到新的专用服务器,这是我的麻烦开始的地方。file_get_contents导致我的服务器挂起

我注意到我的页面挂起很糟糕,但它们只发生在我的博客上,而不发生在静态页面上。然后我意识到,当我转到wp-admin部分时,他们不会挂起,这使我能够解决file_get_contents问题。一旦从我的主题中删除,博客加载完美。

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

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

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

就像我说的,这在我的VPS服务器上运行正常,所以文件起作用了,我只是无所适从而导致挂断。

有什么建议吗?谢谢!

回答

0

如果您向非现场域(例如www.google.com)发出请求,您可能会发现速度下降是由于DNS查找速度缓慢所致。如果要进行这样的请求,我有几个建议:

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

看起来很奇怪,一个Wordpress主题会打电话给file_get_contents。我会调查它到底在寻找什么,并确认你真的希望它加载远程文件。

+0

是的,我是把file_get_contents放入主题的人。由于我拥有网站网络,因此它可以远程添加我的网络等内容,因此我无需对50多个博客进行一些小更改。 –

1

尝试在file_get_contents上保持超时。

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

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