繁体   English   中英

用php写入Apache access_log文件

[英]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_notehttp://php.net/apache_note )将值写入注释,然后将CustomLogLogFormat一起使用( %{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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM