一千萬個為什麽

搜索

PHP加速器和靜態字段

我想知道PHP解釋器中的靜態(類)字段表示。

例如,在Java中加載類時,靜態字段將與該Class對象關聯;這意味著運行相同JVM(和相同的類加載器)的兩個應用程序將具有某種共享的全局變量;)

我只是想知道,如果我使用某種PHP加速器/操作碼緩存,那真正緩存的是什麽?它只是編譯的字節碼,還是一個VM狀態(負責存儲類對象)?

這是因為我害怕在請求之間共享靜態字段/單例對象等。

P.S。:我真的是一個PHP新手,所以如果問題太愚蠢我很抱歉:)

最佳答案

操作碼緩存不會改變任何內容:每個PHP腳本都由其自己的進程(或線程)執行,與其他進程隔離。

操作碼緩存只會緩存操作碼(相當於JAVA的字節碼的PHP),並且也不存儲與當前腳本執行無關 - 即不是任何類型的“ VM狀態”。

這意味著每次執行PHP腳本時, static 變量都將存在於一個版本中,即使該腳本並行執行多次也是如此;使用或不使用操作碼緩存不會改變事物。

轉載註明原文: PHP加速器和靜態字段