你在谈论长期民意调查.
“长轮询”是用于描述以下技术的名称:
>发出一个AJAX请求(使用javascript框架,如
jQuery)服务器等待请求的数据可用,
循环和休眠(您的服务器端PHP脚本)
>数据返回到客户端并进行处理后,此循环重复
(通常在你的AJAX请求的onComplete回调函数中)
这基本上模拟了从客户端到服务器的连续实时流.出于多种原因,我不会在PHP中这样做.这里有一些 :
> PHP用于快速执行(不等待)
> PHP将强制您在服务器端进行某种轮询
依赖睡眠()
> PHP将占用你的RAM,同时为每个产生进程
请求(Apache会这样做)
>不要为此目的使用Apache服务器! Apache服务器将能够比几百个持久连接更好地处理成千上万的短有限连接.无论你走哪个方向(长轮询与ajax)你可能想要设置一个专门用于聊天的轻量级网络服务器.像Lighttpd或Nginx这样的东西,在相同的内存/ CPU条件下可以有更多的max_clients或更多的同时请求.
但是你可以使用sleep,轮询数据库(或者更好的缓存APC / Memcache)来实现.
如果你想做类似的事情跳进一些可以处理事件的技术:Python(Tornado,gevent,eventlet,Twisted,…),Ruby(Eventmachine,…),Erlang,Scala,服务器端JavaScript(node.js, …),彗星……
相反,你可以使用简单的方法
看看这张桌子.
你可以做那样的事情
>为ex创建一个名为db的表.当用户登录您的站点时,记录并记录一些各种数据(例如IP,登录日期……).将signout_date字段留空. (当用户注销时只更新此表并放置当前日期)因此,如果有人在您的站点上,则注销日期字段必须为空>然后在每个用户活动中,检查表中的user_id:如果有多个行具有相同的user_id和空的注销日期字段.然后只需通知用户,另一台用您的凭据登录的电脑.