2012-11-03 29 views
-1

我有1000行php會話文件,必須一一向用戶顯示,我會喜歡避免或減少數據旋轉。哪種方法最好?我有1000行的php會話文件,必須一一向用戶顯示,我想避免數據傳輸

+0

提供的信息很差,請用一個例子編輯你的問題。 – RezaSh

+0

可以得到一個數據樣本嗎?此外,有關該用例的更多信息可能會有所幫助。用戶如何/爲什麼一次讀取這一數據一行? – slashingweapon

+0

我不知道你的意思。你是說你在php會話中有1000行數據?如果是這樣,爲什你沒有訪問MySQL數據庫嗎? – Codeguy007

回答

0

通常,您只在會話數據中保留用戶特定的信息。例如,用戶放入購物車的物品可以放到那裏。

如果您想在檢索目錄時減少數據庫服務器上的負載,那麼您想要進行某種緩存。有很多選擇,但最常見的是:

  • memcached。這在您的Web服務器上(或者在附近的服務器上)作爲另一個進程運行。
  • APC。這是我個人最喜歡的簡單部署。它是PHP的附加組件,但一旦安裝,您就不必管理或監視任何其他服務器進程。
  • 文件系統。這很容易實現,並且不需要任何新的軟件或附件或過程。您所需要的只是一個可由Web服務器寫入的目錄。

的基本思路是這樣的:獲取您的目錄數據將功能:

Retrieve the catalog from the cache. 
If the catalog is not in cache 
    Get the data from the database 
    Create the catalog object/array 
    Save the catalog to the cache 
Return the catalog 

隨着Memcached和APC,數據被自動序列適合你,你可以宣佈你想要多久要緩存的數據。一旦時間用完,數據將從緩存中消失。這樣,您可以確保以合理的時間間隔從數據庫刷新目錄。

如果您使用的是文件系統,則必須爲自己做更多的工作。您必須檢查緩存文件的年齡(以查看是否需要刷新數據),並且您必須撥打serialize()unserialize()將您的數據對象轉換爲可保存的字節流並返回。

當您渲染HTML頁面時,您只需將信息放入用戶將看到的信息中。通常不需要將整個目錄一次全部發送給用戶。

如果目錄非常大,那麼可以考慮在單獨的緩存條目中緩存目錄中的單個項目,而不是將整個項目放入緩存中。你真的必須是多大的「太大」的判斷。通常情況下,網絡I/O是Web服務器和數據庫的大延遲問題,因此您可以從磁盤讀取數量驚人的數據,而不會顯示任何性能下降(在您注意到任何事情之前超過100千字節)。

0

我不會使用會話變量來存儲產品數據並避免數據。如果你想減輕體重,你可以在你的html文件中使用css,你可以使用更短的函數和變量名稱。通常產品數據存儲在(mysql)數據庫中。當你想避開特殊的數據庫時,sqlite也可以與普通文件一起工作。您也可以壓縮產品數據並在瀏覽器中進行解壓縮,但現代服務器和瀏覽器已經支持壓縮,所以這隻有在產品數據沒有得到良好壓縮的情況下才有意義,或者您使用共享Webhoster和/或您的管理員不會「要啓用壓縮。

相關問題