2011-03-28 71 views
2

PHP中最後一個類,對象的實例需要多長時間。它僅限於正在運行的腳本,還是會持續一段時間?如果它持續一個會話,則不管PHP腳本是否已經開始了會話?PHP類的實例會持續多久?

一個簡單的問題,但這對我有很大的影響,因爲這意味着用戶數據將在服務器上保留下來,並且不需要存儲在會話變量中。因此影響了我設計的一些基礎。

感謝 科林

回答

-1
+0

所以你可以說這個問題是一個重複的,應予以關閉。 – Tony 2011-03-28 08:26:39

+0

好吧,不是真的重複,它只是已被覆蓋的另一部分。 – Spyros 2011-03-28 08:28:15

+0

我看到這個線程的問題,我的結論是,它可能會在會話中存活。我認爲將變量存儲在會話數組中可能會更容易。看起來更堅實可靠。 – 2011-03-28 09:02:11

3

的問題並不真正屬於,但OOP到PHP的行爲一般

所有PHP數據是無處不在以及PHP腳本本身。

PHP腳本執行是原子的。它不像桌面應用程序一直在瀏覽器中運行,甚至不是一個持久連接到桌面應用程序的守護進程。它更像是一個命令行工具 - 執行它並退出。

這就是爲什麼需要使用外部存儲,如文件或數據庫。但是,當然,您可以只保存字符串,而不是變量的實例或任何類型的實例。僅限字符串。

0

這取決於PHP的配置方式。如果將PHP配置爲CGI,則在每次調用時實例都會丟失。每個http請求都會調用PHP。

如果將PHP配置爲模塊,那麼會有多個進程處理PHP請求。因此,該實例將在「特定」過程中存活。但隨後的請求可能由不同的進程處理。

如果您需要類實例才能生存,則需要將其序列化並將其存儲在數據庫或文件中。

如果此信息是暫時的(或存儲在其他地方),您可以在會話中存儲(seralize)它。一個例子是每個http請求可能需要的用戶全名,所以它可以從DB讀取一次,然後存儲在會話中。

在會話中存儲類實例的實例:http://www.talkphp.com/advanced-php-programming/3407-storing-class-instance-into-session.html