我需要一些帮助来弄清楚网络服务器有关执行时间的情况。当服务器返回的字符数大于~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
只有一个char的差异为0.666?
我在尝试从不同位置(在线代理)获取页面结果时看到运行时差异很大。
所以我想它与距离有关。我在欧盟,服务器在美国。
在找到解决此问题的方法之前,脚本位于:http://selfreveal.com/speed_test_1.php?i=40953
也是phpinfo():http://selfreveal.com/phpinfo.php
答案 0 :(得分:0)
我的第一个猜测是你遇到内存限制并且垃圾收集器正在进入。尝试增加内存限制:
ini_set('memory_limit'. '128M');
答案 1 :(得分:0)
时间并不总是相同的,您的计算机/服务器可能正在处理另一个进程,这可能会减慢您当前正在运行的其他进程。
尝试运行100x或1000x然后获得avarage。你会发现差异几乎消失了。
答案 2 :(得分:0)
您可以尝试在flush();
之后添加echo 'a';
并重新测试吗?您也可以尝试使用ob_start()
和ob_flush()
来确保它是不是一些内部缓冲区(依赖于操作系统)或任何东西