用php写入Apache access_log文件

Chr*_*man 7 php apache error-log

我需要将统计数据写入实时Apache access_log文件(我有另一个进程计算access_log文件中的特定行,它定期报告回另一个进程).

目前我只是通过在php中执行以下操作来强制进入access_log文件:

file("http://127.0.0.1/logme.php?stuff_that_I_can_watch_here");
Run Code Online (Sandbox Code Playgroud)

logme.php什么都不做,返回空200成功.

上述技术的问题在于,对于Apache服务器的每个请求,都会产生另一个请求写入日志 - 因此需要加倍所需的Apache服务器.

当服务器堆积起来时,对Apache服务器的简单且通常快速的本地调用需要5秒钟.

我可以直接写入access_log文件而不会导致问题,或者甚至可以使用类似于syslog()或error_log()的php写入apache_log文件吗?

Asw*_*and 8

您可以使用apache_note(http://php.net/apache_note)到你的价值观写一张纸条,然后用CustomLogLogFormat(%{NOTE_NAME}n)(http://httpd.apache.org/docs/2.2/mod/mod_log_config.html)登录新钥匙.然后,解析访问日志的程序也可以读取新的日志记录参数.


小智 1

<?php
  $h = fopen('/path/to/access_log', 'a');
  fwrite($h, 'Message');
  fclose($h);
?>
Run Code Online (Sandbox Code Playgroud)

其他人已经对该设计发表了评论。Apache access_log 用于 Apache 记录访问,期间。

我在一个应用程序中使用了大约十几个自定义日志文件,用于所有不同的监控、性能分析和取证目的。每个用途一个日志文件使日志分析更加容易。