使用CI_Session查找用户是否在线

时间:2019-07-09 05:21:37

标签: php mysql codeigniter-3

我正在使用ajax为我的项目开发聊天模块。我想了解该用户是否在线

我正在使用下面显示的数据库表

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

并且此配置数据位于config.php中

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;

此后,我无法找到如何将数据插入该表中。我认为它将直接插入该数据库表中。但是数据库表已经有半天了。有人可以建议我下一步该怎么做

1 个答案:

答案 0 :(得分:0)

首先,要使用数据库驱动程序进行会话处理,必须满足以下条件;

  • 仅默认数据库连接(或您作为默认数据库连接访问的数据库) 可以使用您控制器中的$ this-> db。
  • 您必须启用查询生成器。
  • 您不能使用持久连接。
  • 您不能在启用cache_on设置的情况下使用连接。

然后您必须创建一个用于存储会话数据的表;

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

您不需要向该表添加主键,因为您的选项“ sess_match_ip”设置为FALSE。