如何在PHP中建立自己的FastCGI接口?自定義PHP FastCGI接口? (更快?)
我想要做類似於they're doing in Perl,但在PHP中。它甚至有可能嗎?會更快嗎? (即,我想能夠加載一個網頁應用程序框架一旦到內存中,然後只是FastCGI調用我提供的每個請求的方法。所以不是更通用的PHP預加載正在發生在「默認」PHP FastCGI設置中的解釋器)。
乾杯!
(編輯:是不是雜種狗和回報率這樣做呢?)
好,我現在做一個刻着圖:)
如何在PHP中建立自己的FastCGI接口?自定義PHP FastCGI接口? (更快?)
我想要做類似於they're doing in Perl,但在PHP中。它甚至有可能嗎?會更快嗎? (即,我想能夠加載一個網頁應用程序框架一旦到內存中,然後只是FastCGI調用我提供的每個請求的方法。所以不是更通用的PHP預加載正在發生在「默認」PHP FastCGI設置中的解釋器)。
乾杯!
(編輯:是不是雜種狗和回報率這樣做呢?)
好,我現在做一個刻着圖:)
我可能會被誤(已經很晚了),但是你不是在試圖做某種形式的緩存嗎?無論如何,FastCGI接口似乎已被很好地定義。所以,應該可以很容易地做任何你想做的事情。
你可以不做在 PHP 爲 PHP,你可以做C語言爲CGI-SAPI但你可能想使用APC代替。
如果你真的確定它是在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網站。
是的,Mongrel&RoR正在這樣做。 RoR創建MVC應用程序,Mongrel調用必要的方法。但是,我不知道如何使用FastCGI,所以我不能告訴你如何模仿它。 – 2009-06-01 15:41:15