2011-09-29 79 views
1

在用PHP(例如社交網絡)編寫的應用程序中,假設有10個用戶(已登錄)正在瀏覽網站。PHP初學者:在哪裏和如何存儲對象?

在PHP代碼中,創建了「用戶」對象來存儲用戶數據並將值傳遞給其他函數和類。

問題:當這10個用戶轉到user.php,它有代碼來創建「user」對象時,這些對象如何在PHP的內存中存儲?他們不衝突嗎?每個「用戶」對象是唯一存儲在內存中還是會被另一個覆蓋?

例如,用戶a首先訪問對象「用戶」包含他/她的數據,但是當用戶第二次訪問時,內存中的「用戶」對象被覆蓋,所以當第一位用戶調用對象時,它是第二位用戶數據檢索。

或者,它是獨一無二的嗎?

我想了解PHP中的對象作爲新手,請解釋它,只是因爲我沒有找到關於OOP的網頁來解釋這一點。

回答

7

PHP是一個CGI應用程序,這意味着它在每個請求中都被啓動和終止。

  • 客戶端發送到Web服務器的請求
  • 服務器啓動PHP和將請求傳遞給它
  • PHP分配的內存塊的腳本
  • 正在執行
  • 腳本,所有對象它創建存儲在內存該塊
  • 你腳本生成一些HTML,這個網站被髮送到客戶端
  • 內存被釋放,PHP停止

如果您有10個客戶端請求在同一時間到來,將會啓動10個php副本並使用10個獨立內存塊。所以,不,來自不同請求的對象不會干涉。

(注意:這個解釋是故意簡化的,實際上有不同的PHP設置和持久性選項)。

1

你需要看看與php相關的對象設計模式,這本身就是一個很大的主題。有一本名爲「PHP Objects,Patterns and Practice」的優秀Apress書,它解釋了一些更常見的模式以及如何使用它們,這將是一個開始學習的好地方。

1

用戶信息全部存儲在數據庫中,用戶對象每次加載頁面時都必須檢索這些數據。

該對象知道用戶正在看什麼頁面,因爲他們的session_id,在堅果外殼是一個隨機的ID給你,存儲在一個cookie。

使用session_id你可以從數據庫中檢索正確的信息。

2

學習最好的方法是到本地PC或Mac上安裝PHP,然後創建一個PHP信息文件

<?php 
phpinfo(); 
?> 

...然後在瀏覽器中打開它。這會告訴你你的服務器上的所有設置爲PHP和其他東西。

關於你的問題的答案,這是一個更高級的newbee主題,但php會話是保持用戶信息的工作。他們通常在少量時間內完成對用戶唯一的會話ID,並動態分配內存或磁盤空間/平面文件或數據庫(再次參見上面的設置)以存儲相關數據。

對你而言不幸的是,這些都不是「自動」的,你必須創建腳本以使其發生並以你想要的方式運行。在這個網站上提出問題是一個很好的開始......