2012-04-24 43 views
1

我正在開發一個基於Apache的應用程序少巫婆自定義模塊。有沒有一種方法來確定Apache模塊的加載順序

我想與其他人分享一個模塊中的一些功能。 我需要在stratup階段將它們連接在一起。 我想用一個模塊名稱來使用GetModuleHandle + GetProcAddress(它只能在Windows下運行) - 但是隻有當模塊已經被Apache服務器加載時,它纔會成功。

有沒有辦法配置Apache模塊的加載順序。 我只需要控制我的模塊 - 其他模塊是不相關的。

提前致謝。

+1

我想(但我不確定,所以不要把它當作權威)模塊按LoadModule指令出現在配置文件。如果'GetModuleHandle'失敗並且記錄順序非常重要的事實,您應該可能會失敗並返回錯誤。 – larsks 2012-04-24 15:09:14

回答

1

如果您試圖從模塊的源代碼控制Apache掛接呼叫順序,則可以嘗試使用APR_HOOK_FIRST,APR_HOOK_MIDDLEAPR_HOOK_LAST。或者你可以專門命名其他模塊來強制排序約束。從docs

......「有這樣做的兩種機制,第一,比較簡陋,方法,允許我們指定大致在鉤運行相對於其他模塊的最後一個參數控制這一點。有三種可能的值:APR_HOOK_FIRST,APR_HOOK_MIDDLE和APR_HOOK_LAST

「使用任何特定的值可以以相對於彼此的任何順序執行所有的模塊,但是,當然,使用APR_HOOK_FIRST所有模塊將APR_HOOK_MIDDLE之前運行,其在APR_HOOK_LAST之前。運行時不關心的模塊應該使用APR_HOOK_MIDDLE。這些值被隔開,所以像APR_HOOK_FIRST-2這樣的位置可能比其他函數稍早掛鉤。 ...

「另一種方法允許更好的控制,當模塊知道它必須在其他模塊之前(或之後)運行時,可以通過名稱指定它們;第二個參數是NULL-終止數組的字符串,包含必須在當前模塊之前(之後)運行的模塊名稱,例如,假設我們希望在執行之前運行「mod_xyz.c」和「mod_abc.c」,那麼我們會掛鉤如下所示......「[後面的例子]

相關問題