2011-07-08 40 views
1

好的,這就是我想要做的。我在我的web服務器(運行openSuSE 11.1)上安裝了squid代理安裝程序,並且每次將新條目添加到access.log時,我都想將訪問信息轉儲到MySQL數據庫。我做這件事最好的辦法是什麼?每次更改文件時都要運行程序

目前,我正在考慮編寫一個守護程序,每2-3秒檢查文件的變化,但我認爲這不是一個非常有效的方法。我能用其他方式實現這一目標嗎?

回答

0

我發現最好的解決辦法,這是非常具體的,以我的要求是使用魷魚「redirect_program」:http://wiki.squid-cache.org/Features/Redirectors

這完全適用於我的目的並給我足夠的信息,在節目中做我的事。

感謝paulsm4提供了一個完美的解決方案,以防這種功能無法使用。

1

我建議你魷魚日誌直接寫入數據庫,或有(汽車無運行)守護進程(名義上)在日誌文件上做「tail -f」,插入記錄。

根據您能承受多少數據丟失,您可能需要做很多技巧來記住您以持久方式到達的文件中的「點」(例如數據庫中的一個小表,在同一個交易中)等。正確地做到這一點是不平凡的,但是,它可以完成。

通常情況下,你會希望這樣做是異步的,因爲squid可能比mysql更快創建文件中的記錄,特別是當它不在時。

您還需要對記錄進行批處理,因爲插入單個記錄的效率相對較低。

0

不知道這是否會工作,但也許你可以創建一個表與CSV storage engine,並有squid代理直接寫入到創建table.CSV文件,而不是一個access.log

相關問題