2010-02-08 66 views
0

我有一個cgi網絡程序(C語言),它將不同的錯誤消息輸出到日誌文件中。如果程序再次運行並遇到相同的錯誤,我不希望再次記錄相同的錯誤消息。我正在尋找不同的選擇,任何建議表示讚賞。謝謝。如何保存CGI應用程序的服務器狀態?

-Cookie:在HTML <head>部分已打印出來後無法設置cookie。
(頭段之後會出現任何錯誤)

- 數據庫:沒有。這個問題安裝一個的開銷太大。

-Parse log file:許多其他進程正在寫入此日誌文件。

-html文件隱藏的輸入:似乎凌亂。在同一個html頁面上有3種不同的形式。我如何確保無論提交哪種表單都始終提交隱藏字段?但其中一個錯誤是當html無法生成時,所以不能依賴於此。

謝謝。

回答

1

另一種選擇是創建某種形式的臨時文件,無論您身在何處(不確定權限),並閱讀該文件以完成任何工作。只需列出錯誤類型和可選的時間,或許?假設您想要在程序的各個運行過程中保持這種行爲。這是沒有數據庫的數據庫解決方案,真的,所以我不確定這是多麼有幫助。

每當我提到沒有數據庫的數據庫解決方案時,我總是必須提及SQLite這是一個基於文件的無服務器SQL「服務器」。

+0

是的,SQLite是偉大的,但現在不得不離開這個。至於臨時文件,xml是一個好主意,或者只是解析一個文本文件? – 2010-02-08 23:29:18

+0

我想這取決於你的系統 - 我會爭辯說,如果你不需要數據庫的話,XML可能也是矯枉過正的......畢竟,只有你的程序需要閱讀它,因此它可以以任何格式像(如果你需要擴展功能可能使用XML?)。 – 2010-02-08 23:39:02

+0

我不完全確定你有什麼權限作爲CGI程序,但我認爲你只需寫入/ tmp/yourcgiprogramstatename或c:\ windows \ temp \ yourcfgprogram.state,以適合你爲準。 – 2010-02-08 23:40:07

1

將構建好的頁面存儲在一個變量中並在最後輸出它將允許您在任何時候發送標題。

+0

不幸的是,我使用的是模板html文件,只能替換$ KEYWORDS。 www.algonet.se/~thunberg – 2010-02-08 23:24:28

+0

難道不可能收集所有的關鍵詞,然後*一次性做所有的替換? – 2010-02-08 23:26:56

1

我認爲你應該重構你的程序以創建它的所有輸出以前發送任何HTML到客戶端,這樣你將能夠事先知道所有現有的錯誤並設置一個cookie。

現在,如果由於任何原因而無法使用,您應該有一個臨時文件來標識已經顯示的IP地址和用戶代理以及錯誤。一個簡單的文本文件應該足夠快速解析。

+0

必須改變太多來重構程序。聽起來像.txt可能是.... – 2010-02-09 00:13:18

相關問題