php文件\u获取\u内容速度慢
我有两台配置不同的服务器 服务器1: Apache-2.2.2, PHP-5.3.10 服务器2: Apache-2.4.7, PHP-5.5.9php文件\u获取\u内容速度慢,php,apache,curl,Php,Apache,Curl,我有两台配置不同的服务器 服务器1: Apache-2.2.2, PHP-5.3.10 服务器2: Apache-2.4.7, PHP-5.5.9 file\u获取内容(“来自服务器1的文件”)工作正常。但是,file\u获取内容(“filefromserver2”)速度非常慢,检索文件内容需要5分钟 CURL在这两个服务器上都可以正常工作。问题仅限于文件\u获取\u内容。我也看到了服务器配置,两台服务器都是一样的 当我使用相对路径时,它是好的。问题来自完整的url。 openssl已启用,并且
file\u获取内容(“来自服务器1的文件”)
工作正常。但是,file\u获取内容(“filefromserver2”)
速度非常慢,检索文件内容需要5分钟
CURL在这两个服务器上都可以正常工作。问题仅限于文件\u获取\u内容
。我也看到了服务器配置,两台服务器都是一样的
当我使用相对路径时,它是好的。问题来自完整的url。
openssl已启用,并且allow\u url\u fopen
也设置为on
如果有任何帮助,我们将不胜感激。从逻辑上讲,至少有四个方面需要研究以解决此性能问题: 首先,硬件: 磁盘上的负载是多少?硬件问题?服务器2是否使用慢速磁盘?磁盘是否在同一台机器上运行 其次,Apache HTTP服务器: Apache错误日志中是否有任何错误报告 为了更好地进行比较,您可以在两台web服务器上运行相同的Apache版本和相同的配置 Apache HTTP服务器有许多功能,包括缓存\磁盘\模块、缓存\模块和文件\缓存\模块—这些功能是否在一台/两台web服务器上都启用 尝试关闭TCP连接,如下所述 第三,PHP配置。 PHP错误日志中是否有任何错误报告 最后是PHP脚本。 尝试加快PHP脚本的速度。为了加快速度,可以考虑使用FockOpen()替换套接字FielyGET-CocultStand()。下面的代码段来自PHP文档,并解释了如何使用:
$fp=fsockopen(“www.example.com”,80,$errno,$errstr,30);
如果(!$fp){
回显“$errstr($errno)
\n”;
}否则{
$out=“GET/HTTP/1.1\r\n”;
$out.=“主机:www.example.com\r\n”;
$out.=“连接:关闭\r\n\r\n”;
fwrite($fp,$out);
而(!feof($fp)){
echo fgets(fp,128美元);
}
fclose($fp);
}
不清楚这两台服务器的作用。您是在它们上面运行客户端代码(curl,file\u get\u contents()
),还是从它们下载?另外,发布实际代码和用于比较的curl命令行有助于获得答案。我正在尝试从这些服务器下载。下面是我使用的CURL代码$ch=CURL\u init();curl_setopt($ch,CURLOPT_URL,'http://example.com/test.txt'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1)$输出=curl_exec($ch)代码>这可能取决于配置和缓存。你没有提供足够的细节来说明这两个问题。这个问题可能更适合于超级用户或服务器故障……因为它没有提供足够的信息而关闭。您是否在服务器上记录请求持续时间?(如果没有,您需要启动)您是否使用数据包嗅探器监视连接以查找延迟?您是否在浏览器中看到相同的行为?我使用wireshark跟踪请求过程。看起来浏览器正在等待服务器响应。我在apache配置中启用了调试。在那里,我发现aftermod_authz_core
正在等待apache超时值达到。基本上,服务器在超时到达之前不会提供响应。如果我将超时值更改为10秒,则服务器将在10秒后提供服务。
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}