php - SQLite 作为 session 存储

标签 php sqlite model-view-controller memcached session-cookies

我想知道将 SQLite 用作主 session 存储或至少作为主 memcached 的备份 session 存储是一个好习惯吗?

你能告诉我一些优缺点吗?

(我正在构建一个用于教育目的的 MVC 框架,并且正在考虑不同的可能性和实现)

最佳答案

SQLite 优点

  • 比基于文件的 session 更快
  • 可以分发到基于文件的 session 比较尴尬的地方

SQLite 缺点

  • 需要创建依赖关系的 SQLite 和其他要监控的东西
  • 更难实现基于 native 文件的 session
  • 大型应用程序可以通过如此多的读写请求、碎片、索引更新等快速杀死 sql 表,尤其是几乎每个页面命中都命中该特定表

更好的解决方案 - Memcache

由于每次访问页面时通常都会访问 session ,因此使用最快的机制是有意义的,而无需数据库层的所有开销,同时仍允许它在分布式系统(例如多个 PHP 服务器)中工作。

使用经过 PHP 良好测试的 Memcache,您甚至可以通过修改一些 php.ini 设置来集成 Memcache session ,或者为了更细粒度的控制(或使用其他软件,如 Redis),您可以创建自己的自定义 session 处理程序.

这有不同的优点和缺点

内存缓存的优势

  • 非常非常快
  • 扩展能力强
  • 易于通过 PHP.INI 实现

内存缓存缺点

  • 另一项有可能崩溃并需要监控的服务
  • 使用 RAM,与 HDD 空间相比,这通常是一种有限的资源,也需要监控

虽然您应该使用其他软件来监视这两个东西,或者编写一个 cron 作业脚本来检查内存缓存服务是否仍在运行 - 但那是另一个问题和另一天的答案。关键是,这些缺点可以在一定程度上减轻。

进一步阅读所涵盖的主题

关于php - SQLite 作为 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544125/

相关文章:

java - 如何沙盒类?

android - 如何把简洁的多个like query

sqlite - System.Data.SQLite 内存数据库多线程

Java View 到 Controller 观察者

java - 我应该将这些字段放在 MVC 模型中的什么位置?

php - 警告 : Unknown: Unable to create temporary file, 检查临时文件目录中的权限。在第 0 行的未知中

php - 生成一个连续的五位字母数字 ID

php - CodeIgniter 应用程序库与系统库

database - 在网站 : help needed 中映射关系型 MongoDB 数据

javascript - 我应该在 ExtJS 4 MVC 中的哪里定义全局函数?