2011-06-13 45 views
4

沿着與以Java爲中心的應用程序相同的路線,Play框架是無狀態的,Lift框架是有狀態的,就像任何servlet或Java EE容器(如Tomcat或GlassFish)都是statefull一樣,PHP web框架也是zend或cake php無狀態或有狀態的, ?基於PHP或PHP的Web框架是有狀態的還是無狀態的?

+8

PHP不是一個框架 – 2011-06-13 06:24:37

+1

PHP不是一個框架,併爲共享什麼,除非你告訴它通過共享信號量,會話或其他機制。 – Gordon 2011-06-13 06:26:06

+0

編輯清楚 – ace 2011-06-13 06:31:42

回答

10

PHP本身沒有狀態。每個請求都是完全獨特的。它在這方面非常接近HTTP的裸機。

要實現狀態,最重要的是你可以使用會話,數據庫,共享內存,文件或任何其他方式保持狀態。像Zend或Cake這樣的框架爲這些機制提供了抽象,使得它在不同程度上具有開箱即用的狀態。儘管PHP從來沒有真正保持狀態。

3

Web應用程序中唯一的'狀態'是持久存儲在某處(如數據庫),Web請求響應流程是無狀態的。它從持久存儲器中取出或放入持久存儲器,以使其表現得像是有狀態的。恕我直言,會話和cookie都包含在這個持久性存儲中。

3

這不是全部關於Java或PHP。 HTTP是一種無狀態協議。

爲了使其成爲有狀態,開發人員(程序員)必須確保存儲所有相關信息,並確保在腳本被調用時讀取所有相關信息。

大多數服務器爲統計管理提供會話管理。

至於爲何無狀態 - 有狀態會話添加顯著內存和性能開銷看到:

models-with-persistent-state-between-http-requests