2011-02-03 149 views
0

我想爲我的特殊協議創建一個apache擴展,它將監聽與apache相同的端口,但在特定目錄或文件(如php)上偵聽。我需要這個用自定義服務器爲我的遊戲提供動力,但不能用php。我不能聽不同的端口或不同的服務器。 apache httpd擴展幫助

我不想創建一個php文件或類似的東西。我需要一個完整的可執行程序,我可以動態地分配內存等等。程序完全在apache服務器之外,但是apache'傳遞'這個程序的特殊請求(例如.foo文件或/ foo /目錄。

我需要一個教程或幫助生成Apache的自定義擴展

更新:

我想創建在我的服務器的後臺運行的守護進程,然後當Apache發送一個請求,它將它轉發給我的守護進程,然後守護進程生成請求,然後發送一個答案。這很重要,不像php腳本文件或perl,因爲這不會執行一次,程序正在運行,並等待Apache發送一些東西。我不知道如何與Apache溝通。但我認爲這不是一個CGI,因爲如果我讀得很好,CGI的運行就像:apache獲取請求,然後爲我的php或perl文件啓動一個新進程,通過參數和stdIN發送數據,然後當該過程結束,從stdOut中讀取答案並將其發回,過程結束。

但我的prgram仍在運行。我需要在後臺運行我的程序,因爲我需要將數據存儲在啓動時加載的內存中。

這樣.: http://i53.tinypic.com/v45jzo.jpg

回答

2

你不需要特殊的延伸,只是register a CGI handler調用你的處理代碼。

編輯 你可以配置Apache來proxy請求您的守護進程。

您將需要返回格式正確的HTTP響應,否則它將無法正常工作。您應該仔細閱讀Apache和基於Web的通信,以更好地瞭解守護進程中需要的內容。

ProxyRequests Off 

<Proxy *> 
Order deny,allow 
Allow from all 
</Proxy> 

ProxyPass /foo http://foo.example.com/bar 
ProxyPassReverse /foo http://foo.example.com/bar 

P.S.寫一個Apache的擴展是太多更難一個不便攜。

+0

我真的不明白什麼是CGI。這在一個API的東西?我想創建一個可執行程序,而不是一個PHP文件。 – 2011-02-03 23:58:19

0

要回答你什麼CGI是

CGI代表通用網關接口的第二個問題。

當你註冊一個處理程序時,拜倫指出你告訴apache將「請求」提供給你的應用程序。 Apache會監聽應用程序的輸出stdout並將結果返回給用戶。

應用程序的參數都是通過您可以從應用程序訪問的環境提供的。

但是,如果你不明白這個東西,你將遇到問題。比如你必須設置某些標題。

DC