我想知道将 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/