2009-01-14 77 views
6

我正在用mod _ perl開發一個應用程序,並且每次更改代碼時重新啓動服務器都是一個巨大的拖動。我想仍然使用mod _ perl進行開發,因爲這是我計劃用於實時服務器的。我沒有看到關於如何做到這一點的文檔中的任何內容。如何讓mod_perl在更改時重新加載源文件?

想法?

回答

9

我認爲Apache2 :: Reload會在某種程度上實現您要找的東西。但是,請記住在您準備將應用投入生產後刪除所有此實現。

監視器在%INC所有模塊

處監視並請求的處理開始重新放入%INC的所有模塊,只需添加以下配置到你的httpd.conf:

PerlModule Apache2::Reload 
PerlInitHandler Apache2::Reload 

當使用連接過濾器和協議模塊時,應在預連接階段調用Apache2 :: Reload:

PerlPreConnectionHandler Apache2::Reload 

註冊模塊隱含

重加載已經與Apache2的::刷新註冊模塊,添加以下到httpd.conf:

PerlModule Apache2::Reload 
PerlInitHandler Apache2::Reload 
PerlSetVar ReloadAll Off 
# ReloadAll defaults to On 

那麼任何模塊與行:

use Apache2::Reload; 

當它們改變時將被重新加載。

查詢信息this documentation page。希望這可以幫助。

2

我用這個解決方案,從佩蘭哈金斯通過PerlMonks:

設置MaxRequestsPerChild爲1,然後加載任何可能改變模塊的孩子,不是父(顯然僅用於開發環境)。每個請求都會碰到新的子服務器,這會重新加載所有潛在更改的模塊。

從 「A better way to see module changes in a running web server

相關問題