【发布时间】:2013-11-26 14:57:27
【问题描述】:
我的Codeigniter sessions 最近死了很多。所以我去查看了我的数据库,发现所有会话都有ip_address 0.0.0.0,有些会话有useragent 0
所以我检查了我的 $CI->input->ip_address() 函数,发现它总是返回 0.0.0.0 事件,认为 $_SERVER['REMOTE_ADDR'] 返回一个在 $CI->input->valid_ip($ip) 中有效的 IP 地址。
这与我的会话死亡有关吗?
我还了解到,当user-data 达到 4K 时,会话往往会终止。它可能是其中的一部分,因为我在会话中为每个页面提供了一个永远不会被删除的 ID。我认为这不是问题,因为 90% 的活动是通过 1 页和AJAXs(我已经添加了 AJAX 会话修复)。
编辑:我使用的是 CI 版本 2.1.4。
【问题讨论】:
-
你的 CI 版本是多少?您的 CI 系统文件夹文件是否已自定义?如果您要进行故障排除,您必须转到
/system/core/input.php并找到public function ip_address()。 -
另外,您提到数据库中的 IP 分配为 0.0.0.0,因此有人会认为您没有使用仅 cookie 路由,因此 4k 限制不适用于数据库会话。
-
我使用的是 CI 版本 2.1.4 并且尚未自定义。我对核心所做的唯一补充是创建一个“MY_Session.php”以应用 AJAX 会话修复。
-
出于好奇,我对您的 AJAX 会话修复感兴趣,因为我无法 100% 解决 RACE 条件问题,所以我恢复使用
$_SESSION。不过,我一次进行了大约 6 个异步调用。
标签: php ajax codeigniter session ip