我正在创建一个简单的实时聊天应用程序,所以我必须在页面右侧显示 chatBuddyList
。
目前我有 2 个用户表,tbl_users
(user_id
,name,email...) 和 tbl_logged_user
(id,user_id
).
在用户登录时,我会将 user_id
插入到 tbl_logged_users
中,在注销时,我将删除该记录。
一切正常,但问题出在 Logout
上。当用户点击 logout
链接时,它会起作用,但有时用户可能会由于 session 过期、浏览器关闭等原因而自动注销 ...
我该如何处理这种情况?实现这一目标的最佳方式是什么?
谢谢。
I am trying to find the best method for this , simply because the exact application is not a real chat based one , i have a table/s with average of
80,000
records. And polling/comet is running about 5-10 seconds of time frame.
编辑
有一些关于session_id
的回答。我认为它没有用,因为 session 超时 php 无法自动更新数据库表,除非有新的请求。
最佳答案
嗯,这不是解决问题的“通常”方式,但我认为这不是一个糟糕的解决方案:
例如,您可以将 websocket 与小型 Node.js 服务器一起使用。当用户使用有效 session 加载页面时,它会连接到服务器(只需两行 javascript)。当它断开连接(关闭页面)时,websocket 中断并且服务器捕获事件。
如果用户关闭浏览器,套接字将断开连接。如果用户单击注销,页面将重新加载,然后不会再次创建套接字(无有效 session )。唯一的问题是当用户长时间打开浏览器并且 session 过期时。好吧,在服务器中添加超时可以解决这个问题。
如果您正在创建聊天应用程序,请尝试使用 websockets,您不会后悔的。
关于php - 获取登录用户的列表 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335155/