我開發一個腳本來閱讀和搜索日誌文件在工作中的大系統。 它目前是這樣工作的:閱讀活動日誌文件,而不需要一個臨時文件
- 用戶定義的搜索參數
- PHP使用了shell_exec(「TAC LOGFILE.LOG> tmpfile.log」)來複制日誌文件(和反向線)到一個臨時文件
- PHP fopen()函數的臨時文件
- PHP讀取通過文件的每一行,並應用搜索參數
- PHP刪除#做出的臨時文件2
我決定採用這種方法,因爲日誌文件每隔幾秒就寫入一次,我需要向後讀取日誌文件。
我的問題是,第2步需要很長的時間,當日志文件> 300MB,並且每天的日誌文件很容易500MB,所以搜索這麼多的數據實在是費時。
我有幾個問題:)上的活動日誌文件
- 我可以簡單地運行的fopen(?
- 它可能會導致日誌文件的損壞,如果我只是讀它,而其他腳本編寫呢?
- 將它減慢腳本寫入日誌文件,如果我在同一時間讀它?
- 我可以讓PHP讀取文件的每一行而不是轉發嗎?
我希望是有道理的......
真棒,感謝您回答我的問題:) 使用grep是我想到的一種可能性,但我的搜索很複雜,我還沒有查看過grep搜索的具體情況。 我正在考慮自動反轉所有日誌文件的順序欄中活動的一個。它應該使搜索檔案更快。 – 2010-06-28 10:38:02