2013-02-12 184 views
1

可能是一個虛擬的問題,但我無法弄清楚。這是一個概念問題。 我有一個網絡平臺,用戶用大約500個同時連接存儲很多東西。 在性能/安全性的名詞,什麼是最好的辦法:連接到MySQL數據庫

  • 用戶每次我需要抓住從它(他每次去BTW另一個頁面的時間)的數據連接到數據庫,並關閉後的連接我抓住他們? 或者
  • 在登錄同時連接用戶的數據庫,保持連接到數據庫(如在$ _SESSION)並殺死在註銷連接? 或者
  • 登錄時,幾乎搶一切從用戶表,它的配置文件之一和所有其他的人,把他們在$ _SESSION並且只有需要更新/插入時,連接到數據庫?

連接本身非常耗時,這就是爲什麼我正在尋找最佳方法。 但在另一方面,我一直聽說「總是儘快關閉數據庫連接」

感謝您的幫助。

+0

如果'$ _SESSION'是PHP的參考,你不能在PHP會話中存儲資源。 – 2013-02-12 12:19:23

+0

沒錯;-)。忘了這個。 – fperr 2013-02-13 11:03:31

回答

0

我會說這在很大程度上取決於你的具體使用情況和您的服務器設置。唯一可以肯定的方法是嘗試不同的解決方案並分析代碼。

通常,當您分析您的第一選擇的解決方案,你會得到的是什麼造成的延遲,什麼是等待/處理時間貢獻最大的提示。這樣你就可以更好地猜測下一個(和改進的)解決方案。

一般是延遲計算,然後緩存儘可能多的一個好方法。對於Web應用程序來說,像Memcached或Redis這樣的非關係型數據庫就是事實上的標準(至少在我的經驗中)。

如果你把你的數據庫連接打開的,你應該知道,作爲你的數據庫設置爲處理你只能運行儘可能多的併發查詢。儘快關閉連接可以保持數據庫併發性。 如果連接建立引入了很多延遲,也許您應該考慮一下抓取所有相關數據並緩存它們。唯一可以確定的方法是分析您的應用程序。

更新:

感謝您的答覆。我會分析這個看看有什麼更好的。 我會看看MemCached。我想稍後再看,但我想 這將是正確的時間。 - fperr

我最初也被MemCached拖延了,但它根本不復雜。它用作(散列)地圖/字典,人們通常只是將會話數據保存在MemCached實例上,並通過會話ID或類似的東西將其索引。

祝你的項目:)

+0

感謝您的回覆。我會分析這個看看有什麼更好的。我將看看MemCached。我想稍後再看,但我想這將是正確的時機。 – fperr 2013-02-13 11:04:04

+0

@fperr您是否熟悉Web分析/基準測試工具?我個人使用'ab' - Apache Benchmark,很多。 – 2013-02-13 11:28:01