如何将数据从php fpm传递到nginx访问日志?

如何将数据从php fpm传递到nginx访问日志?,nginx,php,Nginx,Php,我试图通过在nginx中记录请求URL和$request\u time来查找PHP应用程序中的瓶颈。不幸的是,$request\u time包含网络延迟,我无法对其进行优化。我希望日志包含另一个纯页面生成时间字段,以便将其与$request\u time进行比较 我假设对于慢速连接,nginx快速获取php fpm输出,然后等待客户端下载它。我可以用PHP测量生成时间,但如何将其放入nginx访问日志中?通过PHP将希望nginx登录的数据放入头中 header('RequestTime', 1

我试图通过在nginx中记录请求URL和
$request\u time
来查找PHP应用程序中的瓶颈。不幸的是,
$request\u time
包含网络延迟,我无法对其进行优化。我希望日志包含另一个纯页面生成时间字段,以便将其与
$request\u time
进行比较


我假设对于慢速连接,nginx快速获取php fpm输出,然后等待客户端下载它。我可以用PHP测量生成时间,但如何将其放入nginx访问日志中?

通过PHP将希望nginx登录的数据放入头中

header('RequestTime', 1234);
要求nginx将头文件的值记录到nginx配置中

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" "$http_x_forwarded_for" $upstream_http_requesttime';

请注意,此值也将通过标题发送到客户端,因此额外标题中不应包含任何敏感性质的内容。

将php fpm日志格式更改为所需的格式,并将其指向nginx日志文件,即此文件。php响应后,内容将返回到客户端。如果您在与PHP相同的机器上运行Nginx,则不会出现网络延迟。即使您使用的是TCP而不是unix套接字,也只是略有不同。服务器忙吗?它在avg上每秒接收多少请求?我尝试了这个解决方案,但不幸的是,日志中出现了一个
-
,而不是标题值。事实证明,这个解决方案非常接近:与其使用
$http\u requesttime
,不如使用
$upstream\u http\u requesttime
。我使用
fastcgi\u hide\u header RequestTime
(假设您使用fastcgi与php-fpm进行接口),设法防止将头发送到客户端。