PHP文件获取内容减慢页面加载-需要远程服务器端解决方案

PHP文件获取内容减慢页面加载-需要远程服务器端解决方案,php,connection,Php,Connection,我有数千个html页面,它们被当作php处理 每一页内都有一行: <? file_get_contents("http://www.something.com/get_html.php?id=something"); ?> 它告诉远程web服务器在下载完成时关闭连接 但是,这需要重写所有数千个文件。有没有办法从get_html.php脚本执行相同的操作 这比重写所有页面要容易得多。我试着发送 头部连接:关闭;在剧本里,但没有雪茄 总而言之,我正在寻找答案,但已适应远程服务器端解决方

我有数千个html页面,它们被当作php处理

每一页内都有一行:

<? file_get_contents("http://www.something.com/get_html.php?id=something"); ?>
它告诉远程web服务器在下载完成时关闭连接

但是,这需要重写所有数千个文件。有没有办法从get_html.php脚本执行相同的操作

这比重写所有页面要容易得多。我试着发送

头部连接:关闭;在剧本里,但没有雪茄


总而言之,我正在寻找答案,但已适应远程服务器端解决方案

使用大多数编辑器,您可以轻松地在特定目录中的文件中查找/替换。但是,我建议您开始缓存结果,而不是为每个请求插入您自己或外部的服务器。

远程服务器是否在您的本地网络之外?如果没有,您可以直接通过脚本查询数据库或其他内容,而无需http调用。否则,您可以将搜索结果缓存在Memcache或文件中一段时间。它取决于数据的大小和种类缓存需要多少内存


这只是两个如何获得更快响应时间的示例。有很多方法可以做到这一点。

您可以尝试以下方法:


不知道您是否可以更改服务器配置

这里有几件事供您尝试。尝试使用cURL发出请求,看看它是否仍然挂起。另外,尝试在您的站点上获取不同的页面,看看它是否也很慢。这些测试将有助于确定挂起的是该特定页面还是连接。如果另一个页面也很慢,那么修改“get_html.php”页面可能不会有多大帮助

为了详细说明Elias的答案,如果可以通过执行find-replace轻松修复连接,那么您可以在*nix中的命令行中使用以下命令:

perl -pi -w -e 's/search/replace/g;' *.php

-e means execute the following line of code.
-i means edit in-place
-w write warnings
-p loop
在执行所有操作之前,您必须对一些文件进行测试,但更具体地说,您可以使用此功能快速查找/替换所有文件:

perl -pi -w -e 's/(file_get_contents\("http:\/\/www.something.com\/somepage.html",false,\$context\)\;)/\$context = stream_context_create(array("http" => array("header" => "Connection: close\\r\\n")));\n$1/g;' *.php

这将是一个大项目,因为不应该搜索目录中的所有文件。无法缓存,因为远程文件也有传递给它的url参数,如上id=something请为要进行替换的目录设置筛选器。我不明白为什么你不能缓存结果——除非数据是实时的。只需将您正在使用的相关数据作为密钥保存到您想要的任何数据存储中,并连接到唯一的URL即可。它实际上位于同一台服务器上。但当我尝试使用include ABSOLUTE_PATH_TO_FILE时,它给出了一个错误FILE not found,即使路径实际上是正确的。非常奇怪。即使我将php文件的长度设为零,它仍然会挂起15秒,因此似乎是连接问题。我可以编辑所有的文件,但是我更喜欢php脚本中的一个补丁?我想知道该文件是否已被移动/重命名,因为您也无法在本地调用它。这似乎与这里的帖子相匹配,其中询问者得到了15秒的延迟,因为当他加载文件时,没有从服务器返回任何数据。get_html.php存在并在15秒后返回数据。我甚至试着把它设为零长度,但仍然有同样的问题。
perl -pi -w -e 's/(file_get_contents\("http:\/\/www.something.com\/somepage.html",false,\$context\)\;)/\$context = stream_context_create(array("http" => array("header" => "Connection: close\\r\\n")));\n$1/g;' *.php