求ajax php即时通讯方案(点对点和群聊)

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:42:16
用ajax和php做在线即时通讯问题(想知道流程):
1、通过ajax在打开网页后向服务器发送请求,如果没有新消息则无限循环等待,有新消息后返回数据;这样是不是很占用服务器资源?占用多少?举个例子好吗?
2、如果 服务器不想过多储存两天信息 怎么个算法?(数据库储存吗一定条数呢?)
3、群聊的话怎么办?

1. 无线循环等待是不合理的。比如说,当很多用户登录上来,同时都不互发消息的话,服务端就会产生很多无限循环等待的进程。。。。无法自动结束

2. 按时间算保留信息:每次用户收到信息时,删除两天前的聊天记录数据;
按条数保留数据:每次用户收到信息时,查询该用户目前已经存在的记录条数,超过一定数量就删除最旧的记录或者不在接收新的记录。

时间算法:每次插入一条记录(即收到一条消息),
记录接收时间戳。
$now = time() ;
则一天前的数据是:
$yestoday = $now - 86400 ;
删除数据 delete from .... where `time` < $yestoday

3. 群聊:用一个表存储群聊消息。每个群有一个群号(ID),每次用户登录时 查询时候是否有群,有群则查该群时候有消息 有则显示。每个群用户发言是就把数据存到群聊消息表里面,这样每个用户登录上来都能看到

------------------------
实现即时通讯: 客户端 定时(如每5秒) 向服务端请求 是否有消息,有则返回消息,无则返回空

1.ajax的缺点之一就是对服务器发送请求过多,有时比发送整个页面占用的资源还要多,但这也是它特点之一,没办法。消息问题可以采用定时发送请求的方式,通常4~5秒比较合适。至于资源占用,可以自己算算。
2.即时通讯还是没必要保存太多数据了,通常保存100条就可以
3.群聊有什么区别吗?只是把名字不要固定就可以了