创build一个名为“持续时间”的自定义响应头,logging生成响应所用的时间。 只有提供值为“Get-Duration”的请求标题“Client”时,才允许返回此标题。
您可以使用SetEnvIf为Client: Get-Duration和Header的请求设置环境variables,以添加服务这些请求所用的时间。
[root@dev ~]# cat /etc/httpd/conf.d/test.conf SetEnvIf Client ^Get-Duration$ SET_DURATION Header set X-Duration %D env=SET_DURATION [root@dev ~]# GET -Sed http://localhost/ GET http://localhost/ --> 200 OK Connection: close Date: Mon, 14 Sep 2009 15:08:27 GMT Server: Apache/2.2.3 (Red Hat) Content-Length: 525 Content-Type: text/html;charset=ISO-8859-1 Client-Date: Mon, 14 Sep 2009 15:08:27 GMT Client-Peer: 127.0.0.1:80 Client-Response-Num: 1 Title: Index of / [root@dev ~]# GET -SedH 'Client: Get-Duration' http://localhost/ GET http://localhost/ --> 200 OK Connection: close Date: Mon, 14 Sep 2009 15:08:39 GMT Server: Apache/2.2.3 (Red Hat) Content-Length: 525 Content-Type: text/html;charset=ISO-8859-1 Client-Date: Mon, 14 Sep 2009 15:08:39 GMT Client-Peer: 127.0.0.1:80 Client-Response-Num: 1 Title: Index of / X-Duration: D=540
%D上的mod_headers文档:
从收到请求到标题在线路上发送的时间。 这是请求的持续时间的度量。 值之前是D =。
它看起来D是以微秒为单位测量的,基于这个testing:
[root@dev ~]# cat /var/www/cgi-bin/sleep.cgi #!/bin/sh sleep 1 && echo "Content-type: text/plain" && echo [root@dev ~]# GET -SedH 'Client: Get-Duration' http://localhost/cgi-bin/sleep.cgi \ | grep Duration X-Duration: D=1008576
编辑 :这种方法只有在Apache将头文件写出之前组装好之后才有意义。 如果您正在使用HTTP分块或有一个无缓冲的脚本您的时间可能会误导。
如果你有服务器端的Apache和PHP,你可以使用apache_request_headers()来读取头文件,如果匹配使用header()函数发送自定义头文件,在这里你有一些PHP文档如何阅读:
但是如果你想报告的时间是总的时间 – 通过apache / php处理和发回请求 – 这可能是不可能的/容易做 – 因为当php处理页面时,apache / php不知道时间数据将需要发送回客户端。
SAVECORE