免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5721 | 回复: 11
打印 上一主题 下一主题

PHP做在线聊天<冷饭热炒>comet [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-12 10:06 |只看该作者 |倒序浏览
求助  ,先总结下我的想法

web聊天    页面自动刷新已经被废弃了

AJAX定时取  实现了页面无刷新  但是还是每几秒到服务器取数据,服务器数据一更新不能及时 ‘推’到客户端

前一阵看到了个词 叫comet   了解了一下   实现方法之一是   AJAX发送请求  服务器端脚本做‘死’循环,每次循环睡一下,直到满足条件(新聊天记录)才返回  ,返回后客户端处理数据,然后再连接到服务器

我想问的是  这样做有什么好处? 实现了服务器推?     数据取回 处理  这段时间,服务器端数据可能会更新几次         这就是说,这种‘推’ 没能实现服务器端每次数据更新都推到客户端

在做一款web游戏的聊天   希望高手指点下   怎么去实现比较好

服务器端的聊天数据  怎么存储   频繁更新  用数据库好 还是用文本  

有没有可能实现服务器端不保存记录,每次把数据'推'到客户端保存

论坛徽章:
0
2 [报告]
发表于 2008-09-12 10:28 |只看该作者
恩?没人搭理我

论坛徽章:
0
3 [报告]
发表于 2008-09-12 10:51 |只看该作者
X

哎   PHPER都在哪混呢?

论坛徽章:
0
4 [报告]
发表于 2008-09-12 13:00 |只看该作者
原帖由 仰望星空的狼 于 2008-9-12 10:06 发表
我想问的是  这样做有什么好处? 实现了服务器推?     数据取回 处理  这段时间,服务器端数据可能会更新几次         这就是说,这种‘推’ 没能实现服务器端每次数据更新都推到客户端  ...


好处?可以把页面刷新频率降低,减轻网络流量,信息传递的延迟也比较小。
至于这句话:“数据取回 处理  这段时间,服务器端数据可能会更新几次         这就是说,这种‘推’ 没能实现服务器端每次数据更新都推到客户端”
正常情况下服务器端数据更新几次,就会“推”几次,至于客户端来不来得及处理,或者说如何防止丢数据,就要看写代码者的水平了。

论坛徽章:
0
5 [报告]
发表于 2008-09-12 15:03 |只看该作者
看看 ice的demo吧,我也想看看,一起研究吧

论坛徽章:
0
6 [报告]
发表于 2008-09-13 14:48 |只看该作者
原帖由 sunnyfun 于 2008-9-12 13:00 发表


好处?可以把页面刷新频率降低,减轻网络流量,信息传递的延迟也比较小。
至于这句话:“数据取回 处理  这段时间,服务器端数据可能会更新几次         这就是说,这种‘推’ 没能实现服务器端每次数据更 ...




我没说明白   我说的是用AJAX长轮询  有什么好处   跟AJAX定时去取数据相比较

你说更新几次就推几次   ...长轮询 AJAX取到数据返回  处理数据的时候   与服务器是断开的    服务器 ‘推’ 给谁去?

AJAX长轮询   和 定时去取   优点在哪?  如果说  实时 的话    它也不是完全的 实时 取回服务器数据     这样跟AJAX定时去取基本等于没优势了
而且服务器数据不更新的话还一直占着一个连接

忘高手指点疑惑

论坛徽章:
0
7 [报告]
发表于 2008-09-13 23:51 |只看该作者
你明白你要开发什么东西的话,估计看完COMET就不会在这里问了.
COMET实现了长连接的功能.
好处不言而喻了.

论坛徽章:
0
8 [报告]
发表于 2008-09-15 13:40 |只看该作者
原帖由 BoyAir 于 2008-9-13 23:51 发表
你明白你要开发什么东西的话,估计看完COMET就不会在这里问了.
COMET实现了长连接的功能.
好处不言而喻了.


长连接..  但是还是会断   

前几天是我想错了  我想实时的把数据推到客户端  服务器不存数据   现在考虑用memcache缓存聊天数据

新的问题来了  :   长连接    对服务器性能的要求

服务器可以承受多大的并发

论坛徽章:
0
9 [报告]
发表于 2008-09-15 21:15 |只看该作者
用文本显然是下策,刷新数据库更是下下策,最好的办法是充分利用内存,将聊天记录放在内存中。


如果非要保留所有聊天记录,那么:
内存中保留并满200条记录时(假设ID从1-200递增,最新的是ID 200),将ID 1-100的记录入库,并在内存中删除,直到下一次满200重复以上(根据负载调整)。

论坛徽章:
0
10 [报告]
发表于 2009-05-11 19:43 |只看该作者

回复 #10 bs 的帖子

这样会有问题,如果服务器崩溃了会丢失数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP