2009-06-01 45 views
2

如何在PHP中建立自己的FastCGI接口?自定義PHP FastCGI接口? (更快?)

我想要做類似於they're doing in Perl,但在PHP中。它甚至有可能嗎?會更快嗎? (即,我想能夠加載一個網頁應用程序框架一旦到內存中,然後只是FastCGI調用我提供的每個請求的方法。所以不是更通用的PHP預加載正在發生在「默認」PHP FastCGI設置中的解釋器)。

乾杯!

編輯:是不是雜種狗和回報率這樣做呢?)

好,我現在做一個刻着圖:)

alt text

+0

是的,Mongrel&RoR正在這樣做。 RoR創建MVC應用程序,Mongrel調用必要的方法。但是,我不知道如何使用FastCGI,所以我不能告訴你如何模仿它。 – 2009-06-01 15:41:15

回答

1

我可能會被誤(已經很晚了),但是你不是在試圖做某種形式的緩存嗎?無論如何,FastCGI接口似乎已被很好地定義。所以,應該可以很容易地做任何你想做的事情。

+0

好吧,這可能是緩存是PHP的方式。我真正想要的是讓PHP代碼加載並在內存中啓動。想象一下有很多對象的框架。現在看來,所有代碼都需要爲每個請求初始化。 (即使這個過程可能會通過緩存字節碼等來加速),我希望能夠編寫一個能夠設置所有內容的框架。我猜:)這在面對聰明的PHP緩存機制時可能沒有任何意義。我不知道。 – 0scar 2009-06-01 15:10:30

+0

但是這不會佔用更多的內存,這也會減慢速度? – sybreon 2009-06-02 01:50:49

0

你可以 PHP PHP,你可以做C語言爲CGI-SAPI但你可能想使用APC代替。

0

如果你真的確定它是在PHP中,你可以在理論上,create a php module in c,並形成fastCGI in c的橋樑。

之後即時猜測,你會運行一個PHP腳本訪問fastCGI作爲一個獨立的程序,運行一個循環,並接受請求。其中您將PHP用作「永久虛擬機」(無法找到更好的術語),它通過fastCGI進行通信。

我的確同意,重新加載你的一些依賴庫/ etc,是一個非常容易過分看重的性能流失。但是,這可能是有意設計的,簡化了PHP開發週期。想想沒有經驗的用戶會在一個持久的環境中製造全局變量。折騰大多數fastCGI設置,將根據負載初始化多個副本/線程。它是一小塊蠕蟲。爲每個請求開始一個空白的新石板簡化它。

但是,老實說...如果你關心性能,你可能會考慮fastCGI C++/node.js,作爲替代品....已經爲JavaScript/PHP/C++開發,你的想法絕對有可能。 ..但它真的歸結爲成本效益......是值得的努力?等

PS:你也可以考慮通過嘻哈編譯你的PHP網站。