0

現在、実行中のプロセスによって常に追加されるログ ファイル ストリーム (テキスト形式) があります。PHP を使用して JSON 形式に処理し、jQuery の getJSON で解析しています。

ログファイル内のデータを取得する実用的な方法は何だろうと思っています。ファイルが長すぎてフェッチできないjQueryの投稿機能を使用しました。関数 getJSON は問題ありませんが、ログ ファイルが長すぎて PHP が処理できないため、関数に渡されません。

ログファイルの行数を制限し (CentOS から Tee'd)、ログファイルから特定の行数をフェッチすることを考えました (速度の点で実用的ではありません) が、どうすればよいでしょうか?

4

1 に答える 1

1

ファイルの最後の部分だけを読み取るには、適切な位置までfseekし、そこから開始します。例えば:

define('FILE', '/var/log/logfile');
define('SIZE', 1024*1024);
if (filesize(FILE) <= SIZE) {
  $text = file_get_contents(FILE);
} else {
  $fh = fopen(FILE, 'r');
  fseek($fh, -SIZE, SEEK_END);
  // Remove up to newline to avoid a broken line
  $skip = strlen(fgets($fh));
  $text = fread($fh, SIZE - $skip);
  fclose($fh);
}
// Do your work with $text here...
于 2012-06-16T22:10:08.750 に答える