database - PyroCMS/代码点火器 : too many session entries in db

标签 database codeigniter session pyrocms

我正在为一个小型网站使用 pyrocms/codeigniter 组合。 添加一些内容后,我检查了数据库并看到: multiple session id's

这是正常行为吗?具有相同 ip 的一个用户的多个 session_ids? 我无法想象这是正确的。

我的 session 配置如下:

$config['sess_cookie_name']     = 'pyrocms' . (ENVIRONMENT !== 'production' ? '_' . 

ENVIRONMENT : '');
$config['sess_expiration']      = 14400;
$config['sess_expire_on_close'] = true;
$config['sess_encrypt_cookie']  = true;
$config['sess_use_database']    = true;
// don't change anything but the 'ci_sessions' part of this. The MSM depends on the 'default_' prefix
$config['sess_table_name']      = 'default_ci_sessions';
$config['sess_match_ip']        = true;
$config['sess_match_useragent'] = true;
$config['sess_time_to_update']  = 300;

我没有更改影响 session 类或类似内容的代码行。

红帽行属于一个 15 分钟的 cron-job。我认为这很好。

每次刷新页面都会添加两三个新的 session_entries...

最佳答案

是的,这是正常的。 CI session 类会定期自动生成一个新的 ID。 (默认情况下每 5 分钟一次。)这是使用 CI session 而不是 native PHP session 的固有安全性的一部分。垃圾收集会处理这个,您不需要做任何事情。

您可以在 CI manual 中阅读有关 session ID 行为的更多信息.这是从该页面复制的摘录。

The user's unique Session ID (this is a statistically random string with very strong entropy, hashed with MD5 for portability, and regenerated (by default) every five minutes)

此行为是设计使然。没有什么可以解决的。 session 类内置了垃圾收集功能,可以根据需要删除旧条目。多年来,我有很多项目都在使用 code igniter。这就是它的作用。

如果它真的困扰你,你可以在主 CI 配置文件中更改超时。换行

$config['sess_time_to_update'] = 300 (the 5 minute refresh period)

大于

的数

$config['sess_expiration'] (default 7200)

这将导致 session 在重新生成之前超时。这在理论上本质上不太安全,但除非您要处理敏感数据,否则它在实践中可能无关紧要。

但同样,这是作为多层 CI session 的一部分设计的。这些和其他特性使它比 PHP native session 更好。您可以打开分析并看到这些查询的开销可以忽略不计,尤其是考虑到框架提供的所有其他优化。

关于database - PyroCMS/代码点火器 : too many session entries in db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595073/

相关文章:

sql - 如何在 postgres 中应用调度程序?

database - 使用 ADO/MDAC 时出现自动化错误

linux - 全新安装 codeigniter 404 错误或下载每个页面

php - 什么最好?许多小 session 值还是一个大 session 值? PHP

node.js - 中间件和 NodeJS 错误

java - 设置自定义 session ID java (apache tomcat)

sql - 删除重复的源到目的地(例如,对于 2 个不同的条目(行),德里到孟买和孟买到德里,输出应该是一个)

mysql - 有没有办法对 MySQL 数据库中的单个表进行密码保护?

使用语义 UI 的 Codeigniter 分页

php - mysql | mysql | PHP |在自己的表中加入