gpt4 book ai didi

php - php 输出缓冲区如何工作(使用 $_SERVER ['REQUEST_TIME' 计算脚本执行时间的问题)

转载 作者:行者123 更新时间:2023-12-04 06:20:42 26 4
gpt4 key购买 nike

我真的不知道怎么写标题,所以我尽力了。

我们在计算最终脚本(基于 Web)的执行时间时遇到了问题。

我们做一个简单的

if(time()-$_SERVER['REQUEST_TIME']>X){
logMe();
}

我们发现有时脚本显示需要比 X 秒更长的时间来执行。

我们 100% 确定这不是 mysql、memcached、sphinx 或任何其他常见罪魁祸首的问题。请......只是假设它不是'我们结束的东西'阻止它。

我们甚至在脚本中添加了这个简单的执行时间检查方式,在任何繁重的处理完成之前,仍然有一些点击。主要是远在国外的客户。

所以我认为这一定与输出缓冲区有关。

所以问题如下:

在 php + apache 中,输出缓冲区是如何工作的?假设您有以下内容:
[ 10KB HTML Body Head ]

[ Mysql query #1 ]

[ 50KB HTML Body ]

[ Mysql query #2 ]

[ 20KB HTML Body Footer ]

在本例中,假设您有一个最大速度为 2KB/s 的客户端连接。

所以在最理想的情况下,他需要5秒钟才能收到 “HTML 正文头” .

这是否意味着在 之前需要 5 秒"Mysql 查询#1"被执行?

我想你应该已经明白了。慢速客户端连接是否会影响处理脚本所需的时间。

更进一步:是否有任何 php.ini 设置会影响这一点,flush()/ob_flush() 是否会影响这一点?

谢谢。

最佳答案

PHP 将以最大可能的速度执行,如果必须缓冲输出,脚本将不会暂停,直到缓冲区清空。它会一直填满缓冲区,直到脚本结束。

你的“X”值有多大? $_SERVER['REQUEST_TIME'] 来自 Apache 本身,并且是命中的时间。Apache 中可能会暂停以等待子进程可用于为请求提供服务。在等待资源打开时,PHP 中可能会出现暂停(例如,没有更多可用的数据库句柄,因此请等待一个释放)。然后数据库本身可能会延迟执行和从磁盘检索数据等......

关于php - php 输出缓冲区如何工作(使用 $_SERVER ['REQUEST_TIME' 计算脚本执行时间的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com