by theforever_csdn: 很多在线聊天室开发出来在运行,你可以看看前台代码,基本都是用AJAX。减轻服务器压力的关键在于对信息的保存条数和保存地点。即使是考虑到离线时他人发来留言的问题,其实留言数量也不会有多少条。而且只在上线时去留言表取一次,上线后开始的会话可以存到APPLICATION里,考虑到提取刷新不同步的问题,APPLICATION里对每组会话不能只保留最后一条,可以保存最后三条(已经足够了),对方提取后即删除所提取的信息,如果保存信息时发现三四条仍是满的一条没被提走,则对发信息者提示“网络堵塞,稍后再发”(和我们平时用QQ基本一样),如果发现对方一定时间没更新连接,则认为下线。APPLICATION的位置,访问很快。且信息条数少,反映更快,而对内存的占用也不会很大(对服务器几G的内存来说算问题吗)。<- theforever_csdn
可以先看看IM原理
http://blog.csdn.net/DreamTww/archive/2009/10/04/4632174.aspx
也是用ajax去请求,不过可能请求保持的时间会比较长,然后服务器端用刷新输出缓存的方式将数据实时输出到客户端。等请求过期的时候再一次请求。
感觉如果是这样的话数据库的压力其实是一样的。
至于分表,到一定程度是需要的。
以前考虑过这个,不过没去实现,感觉不太值。
不妨考虑flash+PHP
利用as的事件侦听,这个倒是挺好实现的。
用socket,不过我没详细考虑过数据库的存储。只是考虑了实时聊天。楼下补充!
很多在线聊天室开发出来在运行,你可以看看前台代码,基本都是用AJAX。减轻服务器压力的关键在于对信息的保存条数和保存地点。即使是考虑到离线时他人发来留言的问题,其实留言数量也不会有多少条。而且只在上线时去留言表取一次,上线后开始的会话可以存到APPLICATION里,考虑到提取刷新不同步的问题,APPLICATION里对每组会话不能只保留最后一条,可以保存最后三条(已经足够了),对方提取后即删除所提取的信息,如果保存信息时发现三四条仍是满的一条没被提走,则对发信息者提示“网络堵塞,稍后再发”(和我们平时用QQ基本一样),如果发现对方一定时间没更新连接,则认为下线。APPLICATION的位置,访问很快。且信息条数少,反映更快,而对内存的占用也不会很大(对服务器几G的内存来说算问题吗)。<- theforever_csdn