你这个问题归根结底是想要做一个实时在线人数的功能:
但是http请求是无状态的,所以你没有办法实时知道多少人在线,就是说没有办法精确响应用户把浏览器关了,服务器就能知道并且把把用户标记为下线
解决办法:
服务器里维护一份列表,这个列表记录了每个用户的session_id,有效期比如可以设置为30分钟,在用户每次请求的时候都刷新下这个有效期,用户点击退出时就删除这个用户的session_id。
因此统计这个列表里未过期的sessionid个数就是当前的实时人数
这份表根据你系统的规模,可以是文本,mysql,也可以是memcache redis 都行
存在问题:
用户只是三十分钟停留在页面但是没有退出的系统把他认为下线了。这个可以通过“心跳包”来解决
用户关闭浏览器但是没有记为下线,这个就是我上面提到的 http无状态,这个没招
要想提高精确性就是减少有效期和心跳包的时间设定的结合,这个看你们的需求
分为linux和windows系统下:
windows下:1、首先下载memcache的windows版本,将下载下来的文件解压出来后会看见一个名为memcached.exe的可执行程序
2、将该文件放到指定目录,如D盘
3、安装:
开始->运行->cmd打开命令窗口
进入D盘:cd d:
安装memcache服务:
在命令窗口输入:
memacahed.exe -d install
等待命令执行完成后,就可以在服务列表中看到memcached服务
4、启动memcache服务:
memcached.exe -d start
5、可以通过以下命令来查看memcache服务是否启动成功:
wmic process get description, executablepath | findstr memcached.exe
可以将memcached.exe的路径放入到系统环境变量中,方便使用。
查看memcache运行状态:
在命令窗口输入:
telnet 127.0.0.1 11211
链接到memcache上,输入stats就可以查看到当前memcache的状态了;
linux下:1.下载memcache源码
http://www.memcached.org/
2.解压并进入目录
./configure --prefix=/usr/local/memcache
make
make test
sudo make install
3.启动memcache
memcache -d start -u root
验证memcache是否正确安装并启动
netstat -tap | grep memcached
4.安装memcache扩展库
下载memcache扩展
进入到memcache扩展文件
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install
修改php.ini文件 增加
extension=memcache.so
安装memcached扩展库
下载memcached扩展
memcached扩展需要libMemcached库的支持,所有在安装memcached扩展库之前要确认系统已经安装了libmemcached
安装libmemcached
./configure --prefix=/usr/local/memcache
make
make install
libmemcached安装完成后,就可以安装memcached扩展库
./configure --with-libmemcached-dir=/usr/local/memcached/ --with-php-config=/usr/local/php/bin/php-config
make
make install
同样修改php.ini配置文件,增加
extension=memcached.so
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)