2009-07-17 60 views
1

我在十字路口,不完全確定什麼是最好的使用。現在我正在使用會話數組來存儲計算,但我需要切換到對象,因爲我想要一些函數。但我也在考慮使用ajax並將數據在數據庫中來回傳輸,但我擔心這可能會導致在很多流量下的計算。使用php對象或訪問數據庫會更好嗎?

我想要做的是有一個購物車被添加到項目中,所有的購物車中的項目將需要重新計算,如果一個數量字段的變化,所以我想知道哪個更好解決方案,以便使用對象和會話或更新數據庫中的一個大表,並使用多個用戶操作數據。

我使用MySQL數據庫,如果是,在決定幫助..

回答

0

創建存儲會話ID對應的項目ID的車表。

會話ID將用於關聯瀏覽用戶。計算價格就像使用用戶會話ID檢索所有行並從項目表中總結價格一樣簡單(例如)。對購物車進行的任何更改都會對每個項目進行簡單的插入或刪除。

+0

你所說的會話表的意思是執行某些SQL巫術你的會話存儲?你能給我一個小例子嗎?我正在使用數組atm。 – payling 2009-07-17 13:43:49

1

會話應該快得多,但如果用戶關閉瀏覽器,它將不會持續。我大部分時間都會使用這類會話(購物車,上次訪問的搜索等)。在擁有大量用戶的網站上,您需要在表格上進行維護以清除舊的會話信息。除非我真的需要數據在幾天後出現,否則這對我來說太頭疼了。

+0

我承認有很多不同的會話會導致帶寬問題,這是不正確的? – payling 2009-07-17 13:41:19

0

對於做很多不同的計算,我會與會話...這真的是最有利於帶寬的方式。如果您想在不使用Cookie的情況下堅持購物車,那麼您可以在購物車離開時將其存儲在數據庫中,並在它們返回時重新加載(基於userID明顯存儲購物車)。

1

請記住會話本身可以存儲在數據庫中。所以不管你選擇什麼,你都不應該嘗試推出你自己的基於數據庫的會話。

請記住,標準PHP會話會將會話數據存儲在光盤上。如果您的網站上有許多用戶在進行多次會話,則可能會導致磁盤I/O過多而導致您的盒子停滯不前。但是,如果你有SSD驅動器,這將不是什麼問題。

我以前用過的另一個選項是簡單地在服務器的同一個盒子上放置一個MySQL數據庫,並將數據存儲在僅限內存的表中。我認爲這是兩全其美的:

  • 它比傳統的MyISAM 或InnoDB的數據庫更快,因爲它不 曾經被人拋棄到磁盤(這主要是 隻影響會話寫入)

  • 假設您的數據庫位於 與您的網絡服務器 不同的框中,因爲您的會話db 位於同一個框中,所以速度更快。

  • 可以在 如果你需要(不能與 文件做到這一點)

相關問題