1、对于正常退出的, 可以在网页的unload事件来注销该在线用户,
2、针对有些非正常退出的(如断线),则只能根据是不是很长时间没有收发消息来断定不在线了

解决方案 »

  1.   

    因为php不能作为守候进程执行,所以只能利用每个用户调用页面的php程序执行的机会登记在线用户,和刷新列表,将一定时间以上没有登记的用户视为离线。
      

  2.   

    clear_off_line_users()
    {
    for ($user,$time=<取用户列表>)
     if (time_diff(上次时间,当前时间)>15minutes)
      remove_from_online_list($user); 
    }
    on_client_refresh()
    {
    write_to_onlineuserList("$username",current_time);
    clear_off_line_users();
    }