簡體   English   中英

SQLite作為會話存儲

[英]SQLite as a Session Storage

我想知道將SQLite用作主會話存儲或至少作為主要memcached的備份會話存儲是一種好習慣嗎?

你能給我一些優點和缺點嗎?

(我正在為教育目的構建MVC框架,並考慮了不同的可能性和實現)

SQLite專業人士

  • 比基於文件的會話更快
  • 可以分布在基於文件的會話更尷尬的地方

SQLite缺點

  • 需要SQLite,它創建一個依賴項和其他要監視的東西
  • 更難實現基於本機文件的會話
  • 大型應用程序可以通過如此多的讀寫請求,碎片,索引更新等快速殺死sql表,尤其是幾乎每個頁面都會遇到特定的表

更好的解決方案 - Memcache

由於會話通常在每個頁面訪問時訪問,因此在沒有數據庫層的所有開銷的情況下使用最快的機制是有意義的,同時仍然允許它在分布式系統中工作(例如,多個PHP服務器)。

使用經過PHP測試的Memcache,您甚至可以通過修改一些php.ini設置或更精細的控制(或使用其他軟件如redis)來集成memcache會話,您可以創建自己的自定義會話處理程序。

這有不同的利弊

Memcache優點

  • 非常快
  • 很好地擴展
  • 易於通過PHP.INI實現

Memcache缺點

  • 另一項有可能崩潰並需要監控的服務
  • 使用RAM通常是與HDD空間相比的有限資源,並且還需要監視

雖然您應該使用其他軟件監視這些內容或編寫一個cron作業腳本來檢查內存緩存服務是否仍在運行 - 但這是另一天的另一個問題和答案。 重點是,這些缺點可以在某種程度上減輕。

進一步閱讀所涵蓋的主題

基於文件的會話是個壞主意,因為如果不關閉對會話的寫訪問權(session_write_close();),文件將被鎖定。 但是,當你必須使用sqlite來避免這個問題時,為什么要限制自己/ theServer?

所以sqlite pro: - 易於使用(更改php.ini配置):

session.save_handler = sqlite
session.save_path = "/path/sessions.db"
  • 加載頁面的速度更快(會話現在可以並行工作)
  • 使用ajax更快
  • 內置功能

sqlite con

  • 寫入會話的速度較慢

我想使用apc,但后來我需要實現,我擔心它可能會以安全問題結束......

PHP的文件庫會話非常好而且快速,使用SQLite存儲會話只會增加會話管理的開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM