2016-12-06 10 views
1

私は大きなログファイル300-500メガを持っており、その中で検索を行う必要があります。私は現在、これをPHPコードでgrepを使ってやっていますが、コードをさらに最適化したいと思います。 必要なデータファイル内の最後の10000行以内のデータが必要なので、最後から検索を開始し、パターンが見つかるまで停止して停止します。ファイルの末尾からgrep検索

私はtacがこれを行うことができるという情報がいくつか見つかりましたが、パフォーマンステストではtacを使用すると4倍遅くなっています。 現在、検索には約0.13秒かかっており、追加されたタックは0.50かかります。私は何かが欠けているように感じ、私は助けていただければ幸いです。

最終的にファイルを正しく読み込むと、プロセスの速度が大幅に向上します。ここ

はコードであり、それはあなたがgrep-rフラグを回避することができ、タイマー

<?php 
exec('grep -r "search var" file.log -b | head -1', $result); 
echo $result[0]; 

$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"]; 
echo "<br>".$time; 
?> 
+4

http://unix.stackexchange.com/a/112173 –

答えて

1

が含まれています。そして、最後の10000行以内で検索したいだけですか?だから直接tailそれとgrepパターン。

tail file.log -n 10000 | grep "search var" 
+0

テールコード1000行が解決策になります。私の350メガファイルの最初のテスト結果は0.0045490秒になります。私はファイルサイズがそれとの違いを大きくするとは思わない。私は次のビルドでそのアプローチを使用し、それがどのように機能するかを教えてくれるでしょう。ありがとうございました –

+0

このソリューションは非常にうまくいった、ありがとう –

関連する問題