Thttpd上傳大文件的方法

      最近在給Microsoft做一個項目,碰到需要上傳幾百MB的文件,而thttpd本身也是支持上傳文件功能的,只是thttpd爲了考慮一些需求在某些方面進行了限制。

     這裏我做個簡單的介紹,thttpd的main()函數在thttpd.c裏面,解析http參數的功能在libhttpd.c。config.h頭文件有一些關於系統以及CGI的配置項,關於CGI的配置項主要是考慮一些系統的安全性和網絡擁塞問題。

     在有client連接時,thttpd會相應創建一個fd來進行連接,並且會fork()一個子進程來與之對應,記錄對應子進程的fd。在libhttpd.c的ls函數。

在這個函數裏面實現了fork功能,在這個函數裏還有一個比較重要的處理,依我之見是爲了維護好系統的fd操作,防止創建大量fd陷入死循環達到thttpd限制的上限或者系統最大文件描述數量。

這裏創建了一個定時器,當定時器時間到達時,就去把之前對應創建的子進程kill,CGI_TIMELIMIT宏就是在config.h定義的,

#define CGI_TIMELIM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章