2011-06-22 58 views
0

我有一個日誌文件,假設它是任何文本(txt)文件。PHP日誌解析器(閱讀文本文件)

我正在閱讀它使用php和執行功能。

儘管時間間隔不固定,但日誌文件通常會每隔10秒由程序更新爲普通日誌文件。我準備好延遲展示結果。

一種方法是使用cron作業(每10-20秒刷新腳本看起來相當奇怪)。

假設在同一臺服務器

上的日誌文件和PHP文件,我有我自己的專用服務器的Ubuntu

誰能告訴我,通過它我可以讀取該文件的方法?

當文件發生變化或者我必須使用python/java或其他某種語言來執行某些類似於php文件的操作?

如果答案仍然堅持cronjobs我如何將它們添加到我的Ubuntu服務器(我有php作爲apache模塊)?

感謝

+0

當你提供一些細節,你的問題是非常不具體。你想如何顯示日誌文件?在網頁上? 「解析」帶來了什麼,或者你只是想展示它?否則,寫一個簡單的腳本,使用'readfile()' – mario

+0

@mario以及我可以使用readfile(),但我的問題是如何刷新php文件 – kritya

回答

1
$fp = fopen('/path/to/log/file', 'r'); 
while (true) { 
    $line = fgets($fp); 
    if ($line === false) { 
     echo "no new content, sleeping\n"; 
     sleep(3); 
     fseek($fp, 0, SEEK_CUR); 
    } else { 
     echo $line; 
    } 
} 
+0

有沒有一種方法,我可以使用SSH執行此文件或我必須在瀏覽器中打開它? :D 我的意思是我有一個cui webserver,我該如何打開它中的文件? 休息答案看起來不錯?謝謝 – kritya

+0

如果你的服務器上安裝了PHP的CLI版本,那麼只需運行「/ path/to/php -f/path/to/script」或類似的命令即可。請注意,這將永遠不會退出 - while(true)語句會使其永遠循環。 –

+0

是的,當時我發現它使用谷歌搜索非常感謝:D – kritya

0

您可以使用:

# tail -f log.txt 

或任何日誌文件被命名爲在命令行上。這將保持終端中顯示的最後幾行。您還可以指定多少行顯示,像

# tail -n 100 -f log.txt 
+0

PHP如何進來玩? 和尾巴做什麼? – kritya

+0

我的意思是如何將PHP刷新自己? – kritya

+0

PHP寫入日誌文件的權利?何時訪問頁面?你只是想監視日誌文件,還是試圖將日誌文件顯示到PHP頁面? – serialworm