SQLite作为会话存储

时间:2012-11-24 18:17:31

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

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

你能给我一些优点和缺点吗?

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

3 个答案:

答案 0 :(得分:5)

SQLite专业人士

  • 比基于文件的会话更快
  • 可以分布在基于文件的会话更加尴尬的地方

SQLite缺点

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

更好的解决方案 - Memcache

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

使用经过PHP测试的Memcache,您甚至可以通过修改一些php.ini设置或更精细的控制(或使用其他软件,如redis)来集成memcache会话,您可以创建自己的自定义会话处理程序

这有不同的利弊

Memcache专业人士

  • 非常快
  • 好好扩展
  • 通过PHP.INI轻松实现

Memcache Cons

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

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

进一步阅读有关主题的内容

答案 1 :(得分:2)

基于文件的会话是个坏主意,因为如果你不关闭对会话的写访问权(session_write_close();),文件将被锁定。但是,当你只需要使用sqlite来避免这个问题时,为什么要限制自己/ theServer?

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

session.save_handler = sqlite
session.save_path = "/path/sessions.db"
  • 加载页面的速度更快(会话现在可以并行工作)
  • 使用ajax更快
  • 内置功能

sqlite con

  • 写入会话的速度较慢

我想使用apc,但后来我需要实现,我担心它可能以安全问题结束......

答案 2 :(得分:0)

PHP的文件库会话非常好而且快速,使用SQLite存储会话只会增加会话管理的开销。