我有一個文件用於記錄客戶端的IP地址。他們想保留文件的最後500行。它在一個帶有PHP4的Linux系統上(哦,不!)。如何使用Linux或PHP將文件保持爲1000行?
我打算使用新的IP地址一次添加一行文件。我們無法訪問cron,因此我可能需要使此函數也可以執行行限制清理。
我想或者使用像exec('tail [some params]')
或者可能用PHP讀取文件,在換行符中將其分解爲數組,獲取最後1000個元素並將其寫回。似乎有點內存密集雖然。
什麼是更好的方法來做到這一點?
更新:
每低於@ meagar的評論,如果我想用壓縮功能,我將如何做到這一點我的PHP腳本? (沒有進入的cron)
if(rand(0,10) == 10){ shell_exec("find . logfile.txt [where size > 1mb] -exec zip {} \;") }
將拉鍊自動枚舉的文件,如果有一個現有的文件或做我需要做手工?
處理此問題的更簡單和更標準的方法是定期輪換日誌文件。只要文件達到一定的大小時壓縮文件,並啓動一個新的日誌文件。您將結束當前的'.log'文件和一系列壓縮的'.log.1.gz','.log.2.gz'文件。 – meagar 2011-06-14 15:52:17
我同意邁格爾這似乎是最好的方法,特別是與歷史的角度! – freshnode 2011-06-14 15:57:52
@meagar是我可以從PHP做的事情嗎?我在該問題中添加了更新的部分。如果你可以發佈它作爲答案,我會接受它。 – cwd 2011-06-14 16:18:18