0

我启用了将会话数据存储在数据库中,并且在每次刷新页面时都会插入一条新记录,并最终用许多行填充会话表。我如何将其设置为仅在其 ip 不存在条目并更新现有 ip 时才插入记录?

4

1 回答 1

0

会话有一个超时,您可以在 config.php 文件中设置它(即$config['sess_expiration'] = 7200)。一旦达到该时间,它们就会过期并被删除(通过会话垃圾收集机制)。

. 我如何将其设置为仅在其 ip 不存在条目时才插入记录

它不会为每次更新创建一个新的会话记录,如果选择该选项,它只是从给定 IP 和用户代理的现有会话记录中添加/删除数据(除非会话已过期,在这种情况下它会创建一个新记录)。Codeigniter 有一个内置的垃圾回收机制,它最终(如果不是立即)会删除过期的会话。

并更新现有的IP?

为什么它会更新现有的 ip 并覆盖其会话数据?这是没有意义的。您最终可能会覆盖当前正在使用会话的用户的会话数据。如果用户停止使用系统,会话将最终过期并被删除。

根据codeigniter session class page

加载页面时,会话类将检查用户的会话 cookie 中是否存在有效的会话数据。如果会话数据不存在(或已过期),则会创建一个新会话并将其保存在 cookie 中。如果会话确实存在,则其信息将被更新并且 cookie 将被更新。每次更新都会重新生成 session_id。

于 2012-11-12T08:20:13.313 回答