2010-08-19 75 views
1

在PHP中有許多框架,並且它們都具有前端控制器或入口腳本或應用程序的概念。基本上所有這些都意味着在瀏覽器的Http請求中創建了一個應用實例(就像在Zend框架中,Zend_Application的實例和Yii中的Yii :: createWebApplication一樣),並且每個應用實例進一步初始化不同的組件(嵌套屬性對象)控制器對象,數據庫對象,查看對象(主要是控制器對象的子對象屬性),請求和響應對象等。是否在每個請求上創建並銷燬應用程序對象?

我希望至今清楚。它必須是相同的每個MVC框架:)無論什麼語言

我很想知道這是什麼是這個應用程序實例創建(與其嵌套子對象一起)每次用戶點擊一個瀏覽器按鈕或鏈接併發出HTTP請求或AJAX請求?

我覺得在Java應用程序實例是整個請求執着,也許我錯了:)

是在PHP持久的,有什麼限制如果不是?

感謝您的關注

回答

0

在股票PHP,一切的重建和/或重新加載在每次請求。可能會有修改後的PHP版本(或者與狀態服務器服務對話的第三方擴展或其他內容)可以保持應用程序內存狀態,但是您必須查找它們。

這樣做的主要缺點是,除了將所有內容恢復到可運行狀態的開銷之外,如果網站沒有處理請求,它通常無法做任何事情。有一些解決方法,比如cron作業/計劃任務,但如果應用程序一直「運行」,則不需要這些工作。

+0

這對於處理PHP的服務器來說肯定是很難的:) – 2010-08-19 22:23:35

+0

PHP並沒有你想象的那麼慢。 :)如果沒有過多的東西要加載,特別是如果你使用類似mod_php的東西來保持PHP解釋器加載並準備運行,那麼除了最繁忙的站點外,它的體積都很快。 – cHao 2010-08-20 01:08:19

0

不幸的是,在PHP中遠程進行某種有狀態處理的唯一方法是使用會話(和間接cookie)。即使您使用會話來保存您的狀態,也必須在下一次請求時重建。

+0

通過序列化,框架可以(並且在少數情況下* * *)輕鬆支持在每個請求上加載和保存的應用程序範圍的狀態,很像會話狀態。但是關鍵問題以及被問到的問題的答案是最後一部分:「每次請求都會加載並保存......」。 – cHao 2010-08-20 01:04:27

相關問題