我的问题是创建一个可以在日志文件中搜索的搜索功能。
模式是这样的:
node-id > command
-Date-other descriptions
Output starts
Output ends
node-id > another command
现在,我遇到的问题是从一个日志文件中剪切一个命令的输出,并将其与另一个日志文件的输出进行比较以进行比较。我无法找到一种方法来搜索内容并将其存储到数组或文件中以进行进一步比较。
您不能从文件中剪切东西,您只能更改文件并重新保存它(您可能会剪切东西,具体取决于您的文件系统,直接操作相同的东西,但在这里问这个问题意味着您没有这样的低级文件系统经验)
在 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)
如果您需要不同的东西,您可能想在您的问题中添加信息。