注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐

php 实现同一个账号同时只能一个人登录(转)  

2015-11-03 17:57:35|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

以前考虑过这个问题,今天实现了一下,挺快的,从研究到开发完成差不多4个小时。有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息。

一,实现原理

1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中。

2,同一用户在电脑B登录,验证完用户名和密码后,将该用户信息从数据库读出,取得用户在电脑A登录的session_id,然后在到redis中验证session是否过期。

3,如果过期,不用openfire推送提示信息。如果没有过期,php利用openfire推送消息后,在将redis中用户在电脑A中登录的session删除掉,删除后,在将用户在电脑B登录的个人信息放到session中,并将电脑B登录的session_id更新到数据库中,在这里一定要先发送推送,然后在清空session,不然用户在电脑A收不到xmpp发过来的消息。

注意:

openfire是java cms的一种,自身有数据库,您创建的用户表根openfire自带的用户表之间要建立某种联系(如:手机号,邮箱等),方便信息推送。

同一session_id肯定是在相同媒介上登录的,这个时候,也不用更新数据库和推送消息

下面简单说一下安装过程,以及要注意的地方。

二,安装所用到的工具

  1. # yum install php php-fpm nginx mysql mysql-server redis php-redis php-devel php-pdo php-mysql  

修改session存储方式:

  1. # vim /etc/php-fpm.d/www.conf     
  2.   
  3. ;php_value[session.save_handler] = files   //注释掉旧的  
  4. ;php_value[session.save_path] = /var/lib/php/session  
  5.   
  6. php_value[session.save_handler] = redis  //添加以下内容  
  7. php_value[session.save_path] = "tcp://127.0.0.1:6379"  

启动服务后,如果以下内容说明,session存redis成功了

redis telnet查看session

redis telnet查看session

openfire下载地址:http://www.igniterealtime.org/downloads/

  1. # rpm -ivh ./*.rpm   //下载的是rpm安装包  

openfire启动后,然后访问http://ip:9090,一步一步配置就成了,有一点要注意就是数据库的编码。

关于redis的php操作和命令行操作,请参考:

http://blog.51yip.com/?s=redis
  评论这张
 
阅读(100)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017