![](/img/trans.png)
[英]Put username in apache access_log with PHP and without HTTP auth
[英]Writing to Apache access_log file with php
我需要将统计数据写入实时Apache access_log文件(我有另一个进程计算access_log文件中的特定行,它定期报告回另一个进程)。
目前我只是通过在php中执行以下操作来强制进入access_log文件:
file("http://127.0.0.1/logme.php?stuff_that_I_can_watch_here");
logme.php什么都不做,返回空200成功。
上述技术的问题在于,对于Apache服务器的每个请求,都会产生另一个请求写入日志 - 因此需要加倍所需的Apache服务器。
当服务器堆积起来时,对Apache服务器的简单且通常快速的本地调用需要5秒钟。
我可以直接写入access_log文件而不会导致问题,或者甚至可以使用类似于syslog()或error_log()的php写入apache_log文件吗?
您可以使用apache_note
( http://php.net/apache_note )将值写入注释,然后将CustomLog
与LogFormat
一起使用( %{NOTE_NAME}n
)( http://httpd.apache.org/docs/2.2/ mod / mod_log_config.html )记录新密钥。 然后,解析访问日志的程序也可以读取新的日志记录参数。
是否可以直接写入access_log
您可以直接写入access_log,但不能这样做。
运行的apache可以生成多个进程,
和像PHP一样使用较慢进程写入的锁文件只是进一步延迟了记录速度。
或者有一种简单的方法来使用PHP实现相同的效果
如果请求完全满足您的要求,请不要使用PHP,添加其他自定义日志 。
这是更正确的方式,此自定义日志应包含较小的行,如不记录静态文件访问。 这样可以直接改进日志的解析。
<?php
$h = fopen('/path/to/access_log', 'a');
fwrite($h, 'Message');
fclose($h);
?>
其他人已经评论过这个设计。 Apache access_log用于Apache记录访问时段。
我在一个应用程序中使用了大约十二个自定义日志文件,用于所有不同的监视,性能分析和取证目的。 每个目的一个日志文件使日志分析更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.