7

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

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

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

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

我发现这个看似相似的问题的另一个线程但没有答案:PHP的执行时间基于互联网/连接延迟而变化?

编辑:
我最终将 PHP output_buffering 从 4k 增加到 128k 字节。现在典型的执行时间下降到 2-6 毫秒,并且不再有随机的、荒谬的长时间。

4

1 回答 1

1

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

此外,还有一些类似gethostsbyaddr的函数会减慢 PHP 脚本的速度。

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

于 2012-11-20T11:22:18.263 回答