我的問題是創建一個可以在日誌文件中搜索的搜索功能。使用PHP從輸入模式中搜索日誌文件
的模式是這樣的:現在
node-id > command
-Date-other descriptions
Output starts
Output ends
node-id > another command
,我的問題是從一個日誌文件中切一個命令的輸出,並將它與另一個日誌文件的輸出進行比較比較。我無法找到搜索內容並將其存儲到數組或文件中進行進一步比較的方法。
我的問題是創建一個可以在日誌文件中搜索的搜索功能。使用PHP從輸入模式中搜索日誌文件
的模式是這樣的:現在
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)
如果你需要不同的東西,你可能想添加信息到你的問題。
你到目前爲止嘗試過什麼?你試過什麼樣的錯誤或問題?請提供一些代碼和說明你的想法來解決這個問題。 – Fluffeh 2012-07-16 04:51:50