Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对高延迟(?)用户的长PHP执行_Php_Apache - Fatal编程技术网

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

针对高延迟(?)用户的长PHP执行,php,apache,Php,Apache,我最近在访问者日志中添加了PHP执行时间,以发现代码或数据库中可能存在的问题。时间以脚本开始和结束之间的microtime()差来度量 平均执行时间(包括我自己对站点调试版本的测试)为2-15毫秒。然后我随机看到一些用户执行+300ms。这些可能是由负载峰值、未缓存的数据库查询或文件系统访问引起的 我不明白的是,用户偶尔会出现,执行时间为5-30秒(!)。根据我的测试,这些数据出现在看似随机的页面上,访问日志中没有出现任何请求峰值,代码或数据库查询中也没有任何可能导致性能降低的内容。90%的请求

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

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

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


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

我发现另一条线索似乎有类似的问题,但没有答案:

编辑:

我最终将PHP输出缓冲从4k增加到128k字节。现在,典型的执行时间下降到了2-6毫秒,不再有随机的、荒谬的长时间计时。

我认为延迟会影响PHP的执行时间,具体取决于服务器配置

此外,还有一些函数,如
gethostsbyaddr
,可以降低PHP脚本的速度


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

“那么:延迟会影响PHP脚本的执行时间吗?在将上一个缓冲区发送给用户时,PHP执行是否停止?”——以防止使用nginx作为反向代理。所以php+apache工作得很快,而nginx的工作速度很慢。难道没有办法让apache本身充当php的缓冲区吗?我真的不介意apache进程的寿命是否更长,唯一的问题是延迟的php脚本会打乱页面执行时间统计数据……是的,我认为“output_buffering”值可能与此相关。我认为只要PHP刷新缓冲区,就会出现延迟。不幸的是,增加输出缓冲实际上会使总体性能变差,因为在生成整个页面之前不会向浏览器发送任何内容。