php - 获取登录用户的列表 PHP

标签 php javascript mysql ajax session

我正在创建一个简单的实时聊天应用程序,所以我必须在页面右侧显示 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/

相关文章:

php - 如何执行条件 SQL 插入语句?

javascript - 在显示 "Not allowed to load local resource"错误的字符串上使用 IndexOf() 方法

javascript - 用于根据先前值过滤序列的惯用 clojure 和 Javascript 表达式

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - 使用 PHP 和 MySQL 将 DateTime 值四舍五入到最近的小时

php - Youtube Api率(不喜欢)发布请求不起作用

php - 在PHP中将JPEG转换为渐进JPEG

javascript - 使用 jquery-ajax 加载页面时内容重复

javascript - 获取无法读取未定义的属性 'contacted' 和 'name' 的类型错误

mysql - 两个复制主 mysql 服务器之间的事务