就是一个聊天室  对用户的退出做响应  我已经做了JS的ONUNLOAD和JS的定时发送一个在线标志      但是为了防止用户非正常退出     想做服务器端自己每隔几分钟检查一下用户是否在线     可是完全没有思路 
      
     PHP没有SETTIMEOUT   而且 while里面加SLEEP也不行啊   求大家给点拨个思路就好   谢谢了!

解决方案 »

  1.   

    如果你的服务器是linux就是系统自带的crontab定时执行是否在线程序
    win的话,不知道定时任务可不可以,没有用过
      

  2.   

        我还是个WIN的服务器   怎么办。
      

  3.   

    那就在mysql中写个存储过程,让mysql的event自动执行吧。
      

  4.   

    好  我试试
    4楼。。  我这么做就是为了防止人家给我发不来AJAX请求 
      

  5.   

    给每一个link都加上ajax记录事件.就是记录他的最后活动时间..
    然后ajax定期访问那个最后活动时间..自己规定超过多久就算是登出了.
      

  6.   


    比如你ajax的间隔是3分钟请求一次,那么计算在线标识的时间就是小于三分钟,不能直接依靠mysql来处理,否则一旦客户端出现问题,超过3分钟没有请求,你的mysql种已经注销掉了用户的登录状态,而用户又在三分钟之后重新刷新了页面,你却把他弹出了,对用户的来说是很不友好的!
      

  7.   

    是这样的  我的意思是客户端的确每隔3分钟给服务器一个AJAX的通知  但是服务器总得每隔几分钟检查一下哪些用户发来了通知把?  我现在就是想知道这个   因为有可能人家结束了网页进程  这样服务器这边总不能一直挂着这个用户的在线标志把?
      

  8.   

    半天还没看明白
    比如下面获取在线用户列表的SQL
    select * from user where DATA_ADD(active_time,interval 3 minute) > NOW()
      

  9.   


    语句的确是这样   但是问题是 我如何能让PHP定时的 每3分钟去查一次?