4

我需要一些帮助来弄清楚网络服务器关于执行时间的情况。当服务器返回的字符数超过 ~41000 - 大约 40KB 时,我注意到了一个问题。

所以我做了一个脚本:

<?php
    $php_start_time = MICROTIME(TRUE);
    echo $_GET['i'].':';
    for($i=0;$i<=$_GET['i'];$i++) { echo 'a'; }
    echo '<br>runtime: '.(MICROTIME(TRUE) - $php_start_time);
?>

我尝试了,每个浏览器超过 10 次,多个浏览器:

当 $_GET['i']=40952 我得到大约0.013...ms

当 $_GET['i']=40953 我得到大约0.679...ms

仅一个字符的差异为 0.666?

在尝试从不同位置(在线代理)获取页面结果时,我看到运行时有很大不同。

所以我想这与距离有关。我在欧盟,服务器在美国。

在我找到解决此问题的方法之前,该脚本可在以下位置获得:http ://selfreveal.com/speed_test_1.php?i=40953

还有一个 phpinfo():http ://selfreveal.com/phpinfo.php

4

3 回答 3

0

您可以尝试在重新测试flush();后立即添加吗?您也可以尝试使用并确保它不是一些内部缓冲区(取决于操作系统)或任何东西echo 'a';
ob_start()ob_flush()

于 2012-06-05T20:22:11.003 回答
0

我的第一个猜测是您遇到了内存限制并且垃圾收集器正在启动。尝试增加内存限制:

ini_set('memory_limit'. '128M');
于 2012-06-05T19:57:53.510 回答
0

时间并不总是相同的,您的计算机/服务器可能正在处理另一个进程,这可能会减慢您当前正在运行的其他进程。

尝试运行它 100 倍或 1000 倍,然后得到一个平均值。你会发现差异几乎消失了。

于 2012-06-05T19:58:36.513 回答