0

私の問題は、ログ ファイル内を検索できる検索機能を作成することです。

パターンは次のようなものです。

node-id > command
-Date-other descriptions
Output starts
Output ends
node-id > another command

さて、私が抱えている問題は、あるログ ファイルから 1 つのコマンドの出力を切り取って、比較のために別のログ ファイルからの出力と比較することです。コンテンツを検索して、さらに比較するために配列またはファイルに保存する方法を見つけることができません。

4

1 に答える 1

0

ファイルから何かを切り取ることはできません。ファイルを変更して再保存することしかできません(ファイルシステムによっては、同じものを直接操作して切り取ることができますが、ここでこの質問をすることは、あなたが持っていないことを意味しますそのような低レベルのファイル システムの経験)

php では次のようになります。

$data = file_get_contents($fileToCutFrom);
// ... modify data here, e.g. if it's xml you might wanna use SimpleXML or DOMDocument or some other xml parser, like ganon ( https://code.google.com/p/ganon/ ) - the later one is pretty good if you know you might have incomplete/invalid xml
file_put_contents($fileToCutFrom, $modifiedData);


// and now append to the other file
file_put_contents($fileToAppendTo, $dataToAppend, FILE_APPEND);

ただし、複数のファイルからこれを行うと、重大な競合状態になる可能性があることに注意してください。file_get_contents はアトミックではなく、file_put_contents もアトミックではなく、複数の行を実行するという問題もあります。したがって、コードが一度に複数回実行される可能性がある場合は、すべての「切り取り」とソケットを開く追加を行う単一のスクリプト インスタンスを使用し、他のスクリプトは必要なものをそのファイルに送信するだけです。

また、新しいデータが入ってくるたびにそれを継続的に行いたい場合は、inotify (Linux) またはシステム上の同等のものを見たいと思うかもしれません (osx にはファイル通知サービスもありますが、Windows についてはわかりません)。

別のものが必要な場合は、質問に情報を追加することをお勧めします。

于 2013-06-01T21:52:25.833 に答える