mysql同时用户在线数_大神都是如何查看网页的同时在线人数啊?

我常用的一个方法:

1、 建立一张 mysql 的内存表(优秀的读写性能以及快速增删)

CREATE TABLE `xx_session` (

`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',

`expire` INT(10) UNSIGNED NOT NULL DEFAULT '0',

`ip` INT(10) UNSIGNED NOT NULL DEFAULT '0',

PRIMARY KEY (`user_id`),

KEY `ip` (`ip`),

KEY `expireIndex` (`expire`)

) ENGINE=MEMORY DEFAULT CHARSET=utf8

user_id:用户id

expire:用于告诉系统过期时间

ip:ip2long 转成的整型ip

附:内存表有一个问题,就是重启后所有数据会消失。这点在使用中请务必注意。

2、用户每次操作时 replace into 进内存表:

REPLACE INTO xx_session (user_id, expire, ip)VALUES(10, 1000000000, 102933800);

3、 用户退出时:

DELETE FROM xx_session WHERE user_id=10;

4、 在线用户过期,可以通过 Mysql 的 Event Scheduler 来定时删除过期用户:

CREATE DEFINER=`root`@`%` EVENT `30minute` ON SCHEDULE EVERY 30 MINUTE STARTS '2012-05-30 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN

DELETE FROM xx_session WHERE expire<= UNIX_TIMESTAMP();

END;

注意:

mysql 要启用 Event Scheduler:

查看是否启动:

SELECT @@event_scheduler;

启动方法1(不重启,但重启失效):

SET GLOBAL event_scheduler = 1;

启动方法2(永久生效),在 mysql 启动时加上:

mysqld ... --event_scheduler=1

启动方法3(永久生效),在 my.cnf 中、[mysqld]里,加入:

event_scheduler=ON

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值