如何将数据从php fpm传递到nginx访问日志?
我试图通过在nginx中记录请求URL和如何将数据从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
$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进行接口),设法防止将头发送到客户端。