【问题标题】:CodeIgniter sessions, is my sess_time_to_update too frequent? (less than 15 seconds)CodeIgniter 会话,我的 sess_time_to_update 是否过于频繁? (少于 15 秒)
【发布时间】:2012-06-19 03:10:47
【问题描述】:

我正在使用 CodeIgniter 2.1

我使用 CodeIgniter 的会话来处理用户是否登录。而且效果很好。我将会话存储到数据库中。这是我的一些会话变量:

$config['sess_expiration'] = 3600;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'user_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update'] = 15;

我使用如此低的sess_time_to_update 增量是因为我需要一种方法来监控用户是否已关闭或导航离开页面。由于 CodeIgniter 会在每次更新(15 秒)时更新 last_activity 列 - 为了检查空闲情况,我进行如下查询(我知道这不是正确的语言/语法)

if last_activity < (current_time - 25s) 那么我知道用户可能已经离开了页面。

这个概念很好用,但我想知道如此频繁地更新会话表是否有任何看不见的问题??

谢谢!

【问题讨论】:

    标签: codeigniter session-cookies codeigniter-2 php


    【解决方案1】:

    if last_activity < (current_time - 25s) 仅表示过去 25 秒内没有发出任何请求,不一定表示用户已离开。

    最后一个活动实际上不会每 15 秒更新一次,除非用户每 15 秒发出一次请求。例如,如果我打开一个页面并阅读它五分钟,最后一个活动将不会更新,直到下一个请求。

    我想知道如此频繁地更新会话表是否有任何看不见的问题

    只是更新会话表和刷新 cookie 的一点点开销。 15 秒是一个非常小的时间范围,但如果这是您真正需要的,应该没问题。

    【讨论】:

    • 谢谢!很好的解释。
    【解决方案2】:

    如果您不想每五分钟更新一次会话,请执行以下更改。

    转到System/libraries/Session.php 中的session.php 文件并将如下所有参数设置为空白。它对我有用。

    public $sess_encrypt_cookie;
    public $sess_use_database;
    

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多