【发布时间】:2016-01-01 23:12:11
【问题描述】:
我有两台配置不同的服务器。
服务器 1: 阿帕奇 - 2.2.2, PHP - 5.3.10
服务器 2: 阿帕奇 - 2.4.7, PHP - 5.5.9
file_get_contents("file from server1") 完美运行。但是,file_get_contents("file from server2") 非常慢,需要 5 分钟才能检索文件的内容。
CURL 在两个服务器上都可以正常工作。问题仅限于file_get_contents。我也看到了服务器配置,两台服务器都一样。
当我使用相对路径时很好。问题带有完整的网址。
openssl 已启用,allow_url_fopen 也设置为 on
任何帮助将不胜感激。
【问题讨论】:
-
不清楚这两台服务器的作用是什么。您在它们上运行客户端代码(curl,
file_get_contents())还是从它们下载?此外,发布实际代码和用于比较的 curl 命令行有助于获得答案。 -
我正在尝试从这些服务器下载。这是我使用的 CURL 代码
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.txt'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); -
这可能取决于配置和缓存。你没有提供足够的细节来说明他们中的任何一个。这个问题可能更适合超级用户或服务器故障。
-
.....因为没有提供足够的信息,它将被关闭。您是否在服务器上记录请求持续时间? (如果不是,您需要开始)您是否使用数据包嗅探器监视连接以查找延迟?您在浏览器中看到相同的行为吗?
-
我使用了wireshark来跟踪请求过程。似乎浏览器正在等待服务器响应。我在 apache 配置中启用了调试。在那里我发现
mod_authz_core之后它正在等待 apache 超时值达到。基本上,在超时到达之前,服务器不会提供响应。如果我将超时值更改为 10 秒,那么服务器将在 10 秒内提供服务。