我启用了在数据库中存储会话数据,并且在每个页面上刷新了一个新记录,最终填充了多行的会话表。我怎样才能将其设置为仅在其ip不存在条目且更新现有ip时插入记录?
答案 0 :(得分:0)
会话超时,您可以在config.php文件中设置(即$config['sess_expiration'] = 7200
)。一旦达到该时间,它们将过期并被删除(通过会话垃圾收集机制)。
。我怎样才能将其设置为仅在其ip不存在条目时插入记录
它为每次更新创建一个新的会话记录,如果选择了该选项,它只是添加/删除给定IP和用户代理的现有会话记录中的数据(除非会话已过期,在这种情况下它会创建一个新的记录)。 Codeigniter有一个内置的垃圾收集机制,最终(如果不是立即)删除过期的会话。
并更新现有的ip?
为什么要更新现有的ip并覆盖其会话数据?这是没有意义的。您最终可能会覆盖当前正在使用该会话的用户的会话数据。如果用户已停止使用该系统,则该会话将逐渐过期并被删除。
根据codeigniter session class page:
加载页面时,会话类将检查是否有效 会话数据存在于用户的会话cookie中。如果会话数据 不存在(或者如果它已过期)将创建一个新会话 并保存在cookie中。如果会话确实存在,其信息将会 更新,cookie将更新。随着每次更新, session_id将被重新生成。