首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MySQL和State

PHP/MySQL和State
EN

Stack Overflow用户
提问于 2012-08-01 02:23:40
回答 2查看 71关注 0票数 0

我正在制作一个PHP & MySQL (和CodeIgniter)视频/聊天程序,1)显示当前的在线用户,2)迫使所有用户在版主离开时断开连接。

但是,HTTP是无状态的。实现上述功能的最佳方法是什么?

是否应该对每个用户使用心跳AJAX请求来确定当前状态?我如何知道用户(如版主)是否断开了连接?

EN

回答 2

Stack Overflow用户

发布于 2012-08-01 02:32:48

这将需要一个接近实时实现。您可以有一个表,其中创建了所有的房间/聊天会话。然后,在您的用户表中,您可以有一个版主列和一个当前的房间id列。

房间桌子

列: ID,USER_ID,CREATED_AT,UPDATED_AT,NAME,PASSWORD,HAS_MODERATOR (bool) .

当版主加入一个房间时,您可以将"HAS_MODERATOR“字段更新为true或1,然后您可以编写一个简单的长轮询脚本,它只需向php页面或路由发出ajax请求,并返回一个true或false值。如果它返回为真,那么版主仍然在房间里,否则您可以关闭房间并强制通过javascript或其他东西进行重定向。php脚本只需检查has_moderator是否为真,然后遍历users表,检索所有的版主,并检查他们所在的房间。与您检查的房间匹配版主所在的当前房间。这将确保会议室内有一位主持人。

这可能对你有帮助:Notify Ajax/Javascript that background PHP has completed

票数 1
EN

Stack Overflow用户

发布于 2012-08-01 06:14:48

我认为您可以不使用HTTP的状态逻辑来实现它。您需要将当前会话状态存储在数据库中。每个用户请求都有一个经过身份验证的用户名cookie和一个会话id,用于从后端DB中提取会话。此外,还将有一个变量来检查版主是否存在(心位样式检查)。当版主离开时,只需更改会话状态,这将使所有其他人都退出。如果你需要我建议的任何步骤的细节,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11751764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档