2012-07-16 79 views
0

我的问题是创建一个可以在日志文件中搜索的搜索功能。使用PHP从输入模式中搜索日志文件

的模式是这样的:现在

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

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

+0

你到目前为止尝试过什么?你试过什么样的错误或问题?请提供一些代码和说明你的想法来解决这个问题。 – Fluffeh 2012-07-16 04:51:50

回答

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)

如果你需要不同的东西,你可能想添加信息到你的问题。