我最近在我的访问者日志中添加了 PHP 执行时间,以发现代码或数据库中可能存在的问题。时间测量为脚本开始和结束之间的 microtime() 差异。
平均执行时间(包括我自己对站点调试版本的测试)为 2-15 毫秒。然后我随机看到一些用户执行 +300ms。这些可能是由负载峰值、未缓存的数据库查询或文件系统访问引起的。
我无法理解的是时不时出现的用户,执行时间为 5-30 秒(!)。根据我的测试,它们出现在看似随机的页面上,并且在这些时间访问日志上没有任何请求峰值,代码或数据库查询中也没有任何可能导致性能下降的内容。这些请求中有 90% 来自中国,并且似乎是某种爬虫或机器人。
那么:延迟会影响 PHP 脚本的执行时间吗?将前一个缓冲区发送给用户时,PHP 执行是否暂停?
我发现这个看似相似的问题的另一个线程但没有答案:PHP的执行时间基于互联网/连接延迟而变化?
编辑:
我最终将 PHP output_buffering 从 4k 增加到 128k 字节。现在典型的执行时间下降到 2-6 毫秒,并且不再有随机的、荒谬的长时间。