使用PHP从输入模式搜索日志文件

时间:2012-07-16 04:36:20

标签: php search

我的问题是创建一个可以在日志文件中搜索的搜索功能。

模式是这样的:

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

现在,我遇到的问题是从一个日志文件中删除一个命令的输出,并将其与另一个日志文件的输出进行比较以进行比较。我无法找到搜索内容并将其存储到数组或文件中以进行进一步比较的方法。

1 个答案:

答案 0 :(得分: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也有文件通知服务,但我不知道视窗)

如果您需要不同的内容,可能需要在问题中添加信息。