簡體   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