2017-08-26 98 views
1

對於一個學校項目,我正在編程一個銀行賬戶管理應用程序,我有一個這樣的過程:用戶嘗試登錄。如果成功,我將其所有數據加載到主客戶端對象中。登錄後加載用戶數據

這意味着一個水合梯級:當保溼本身時,一個主要的對象將啓動其他對象的水合作用,這些對象存儲在Client包含的對象數組中。例如。 Client類包含bankAccounts屬性,該屬性是BankAccount對象的數組,其中包含operations屬性,該屬性是Operation對象的數組等等......最後,此Client對象存儲在$_SESSION的內部。

我還在學習OOP,那是我第一次嘗試構建我的類並使用它們。現在,我想知道做這樣的事情是否有好處?如果我和其他一些我見過的項目進行比較,他們似乎每次都需要使用SQL請求來請求他們的數據。例如。如果用戶訪問顯示銀行賬戶的頁面,則將向數據庫請求數據。所以,如果這個用戶刷新了50次,它會重複這些請求50次。

我喜歡我的方式是,一旦客戶端連接,我需要的所有信息都可以輕鬆訪問和組織,我不再需要請求它們。另一方面,如果某些數據被修改,刪除,我將需要更新我的客戶端對象。當用戶登錄時它也需要更多的性能。

這有什麼好的做法?我做的事很常見嗎?正確的做法是什麼?避免 ?

回答

2

數據庫緩存是快速處理的正確方法。

數據庫允許您緩存您的查詢作爲減少數據庫負載的文本文件,但

需要照顧的動態數據。

  1. 如果您登錄並保存結果在一個文本文件中。
  2. 在此用戶信息之間由另一個面板修改。
  3. 然後,您無法查看此用戶的動態數據。
  4. 只要用戶信息以另一種方式更新,您就可以管理此功能,那麼您需要使用唯一文件名刪除與此用戶關聯的緩存文件。

數據庫捕捉寫入功能邏輯

public function write($userid, $object) 
{ 
     $filename = $userid; 
     if (! is_dir($dir_path) && ! @mkdir($dir_path, 0750)) 
     { 
      return FALSE; 
     } 
     if (write_file($dir_path.$filename, serialize($object)) === FALSE) 
     { 
      return FALSE; 
     } 
     chmod($dir_path.$filename, 0640); 
     return TRUE; 
} 

請參閱本CI DB_cache對OOP和核心邏輯CI DB_cache.php

核心邏輯是共同的,所以你可以從這裏走的認識:CI database caching guide