高延迟(?)用户的长PHP执行

时间:2012-11-20 10:20:36

标签: php apache

我最近在访问者日志中添加了PHP执行时间,以发现代码或数据库中可能存在的问题。时间测量为脚本开头和结尾之间的microtime()差异。

平均执行时间(包括我自己对网站调试版本的测试)为2-15ms。然后我随机看一些用户执行+ 300ms。这些可能是由负载高峰,未缓存的数据库查询或文件系统访问引起的。

我无法理解的是,每次都会出现5-30秒(!)执行时间的用户。基于我的测试,它们出现在看似随机的页面上,并且在那些时间访问日志上没有任何请求峰值,也没有任何代码或数据库查询可能导致这种缓慢的性能。其中90%的请求来自中国,似乎是某种爬虫或机器人。

那么:延迟会影响PHP脚本的执行时间吗?当前一个缓冲区被发送给用户时,PHP执行是否暂停?

我发现这个看似相似的其他帖子但没有答案:PHP's execution time changes based upon internet/connection latency?

修改
我最终将PHP output_buffering从4k增加到128k字节。现在,典型的执行时间降至2-6毫秒,并且没有更多随机可笑的长时间。

1 个答案:

答案 0 :(得分:1)

我认为延迟会影响PHP执行时间,具体取决于服务器配置,尤其是output_buffering and implicit_flush

此外,还有一些像gethostsbyaddr这样的函数会降低PHP脚本的速度。

也许您可以使用XDebug生成执行跟踪并查看脚本执行的“时间表”。