2010-02-26 45 views
0

我有一個PHP網站,其中所有頁面都包含一個57K生成的PHP文件。我正在考慮使用操作碼緩存,因此每次加載頁面時都不需要解析文件(我假設加載已解析的文件會比讀取57K源文件更快)。簡單的PHP操作碼緩存解決方案,不需要編譯?

APC似乎是爲這個不錯的人選,但根據我的phpinfo Godaddy的共享主機沒有它在編譯的,我不能編譯,在一個共享的主機環境安裝。 Zend框架已安裝,但根據文檔,它還需要APC或其他操作碼緩存作爲後端。

什麼選擇我必須執行指令緩存?有沒有一個PHP的操作碼緩存解決方案,我可以簡單地通過FTP到godaddy?

回答

0

是否有一個PHP的唯一指令緩存解決方案,我可以簡單的FTP到 GoDaddy的 ?

不幸的是,沒有。當.php文件運行時,已經執行了解釋和編譯操作已經太遲了。

因此,它必須運行作爲PHP擴展,這是編譯...

+0

好了,但如果PHP文件加載了一個其他PHP文件(上述生成的文件),那麼我能想象一個PHP包,它會提供一個load_opcode_if_possible(「x.php」)功能,該功能會嘗試加載已經準備好opcode文件,如果它不可用,那麼它將讀取源代碼文件,並立即將解析的opcode文件寫入下次使用的磁盤。 – Tom 2010-02-26 15:20:42

+0

@Tom:理論上你可以做到這一點,但它會有其自己的懲罰,因爲在編譯之前的解釋階段,PHP(據我所知)在包含的/必需的文件中提取。 – Powerlord 2010-02-26 16:12:50

0

讀取文件PHP文件,解析它,它編譯爲操作碼,並執行操作碼,都是由內部內部完成PHP引擎 - 這意味着PHP腳本絕對不能控制這個過程;並且這也意味着,以改變該處理的唯一方法是經由PHP擴展(PHP擴展裝置使用C developped擴展),其具有控制的高得多的水平。

這意味着沒有辦法讓一個操作碼緩存在純PHP developped:操作碼操作,編譯和緩存,你不能從PHP控制操作。

而且由於PHP擴展可以訪問引擎的內部,只有服務器的管理員可以安裝並啓用它們 - 考慮到它們可能會導致PHP崩潰,吃掉他們想要的任意數量的內存,您大概可以理解爲什麼。

所以,不幸的是,沒有爲你太大的希望:如果你想使用一個碼緩存APC一樣,你就會有一些託管服務,提供它去 - 這可能意味着使用自己的專用服務器。