PHP+MySQL聊天室技术浅谈

近来,在PHPChina推出了PHP聊天室技术的专题,恰好本人最近也在做这个项目,也在此发表一下个人的观点。

聊天室主要功能:

1,注册,登陆,退出,资料修改。

2,用户申请创建聊天室,自定义聊天室属性。

3,显示聊天室名称,描述,主持人,公告,广告。

4,实时显示在线用户列表,可以查看在线用户资料(昵称,email,ip,在线时长等)。

5,发表聊天内容,字体属性,动作,表情,常用短语。

6,允许隐身,私聊,滚屏,屏蔽用户,清屏,聊天场景选择,背景音乐,发送方式自定义。

7,管理员有权对成员进行管理(踢出,禁止发言,移交管理权限)。

注意事项:

1,禁忌使用框架结构(iframe除了减轻您的劳动量外,并不能带来任何好处)

2,前台和后台代码彻底分开,只通过ajax通道传送数据,而且只应该传送必要的数据。(前台显示数据,后台处理数据)

3,禁忌因程序引起的整个页面刷新,只更新需要更改的内容(禁忌使用header,meta刷新页面)。

4,在提交聊天内容时,不能一味追求用户体验的速度,而忽略了实际的聊天记录提交次序。(即是说,提交的聊天记录应该在服务器重组实际的先后次序,再传送到客户端,因为可能在同一时间有很多人提交信息)

使用到的技术:

1,前后台的桥梁——AJAX。可以选用jquery,XAJAX。本人倾向于jquery,速度快,简单耐用,有很多插件,更新的也快。

2,数据载体的形式——XML。其实一般的聊天室数据也不是很复杂,用json完全够了。

3,数据库抽象层——ADODB。用PDO更快一些。个人已经习惯使用ADODB。

4,数据底层存储介质——MySQL。这个没有疑问。

5,数据中间存储介质——memcache。将高速读写的数据存储到memcache共享内存里面,减轻数据库的负荷。

6,如果要实现视频和语音,需要服务端FMS(flash media server)的支持,客户端需要安装flash player。并且涉及到在html,javascript,flash与后台相互之间的数据交互。这方面资料不是很多。

这些是最核心的技术,在实际的应用开发中,还有许多细节问题需要解决。

比如:怎么处理在线列表的更新?

途径有这么两种:

1,刷新整个列表(无论是否有更新)。

2,添加新上线成员,删除掉线成员,更改资料有变动的成员。

显然第二种是最佳的选择。

怎么处理XmlHttpRequest并发的问题?

javascript是单线程的,如果同时有两个XmlHttpRequest对象,则很容易产生问题,这就需要我们控制XmlHttpRequest的生成与结束。

在聊天室里面,我们需要更新的数据主要有:在线列表(包括成员资料的更新),聊天记录,聊天室属性等。而这几项更新的频率又是不一致的(如果时间一致的话,只需要建立一个XmlHttpRequest就可以处理掉)。聊天记录需要较短的时间内更新,在线列表可以稍长时间更新。在不使用框架的前提下,如果分别建立XmlHttpRequest对象,很可能出现并发的问题。这就需要创建一个时间与流程的控制函数。

setInterval('process_control()',3000) //三秒钟调用一次

函数process_control里面实现任务的调度,如:间隔一定时间执行谋任务,当谋任务完成之后才执行下一个任务。

浅谈PHP+MYSQL身份验证的方法
     近日在为学校制做校友录时,需要身份验证,在对比之后决定采用PHP+MYSQL进行身份验证。  之前也曾考虑过用cookies或session。但是用cookies,在用户离线再上线后,只要cookies不过期,不用登录仍然可以保...查看完整版>>浅谈PHP+MYSQL身份验证的方法
 
浅谈PHP+MYSQL身份验证的方法
  近日在为学校制做校友录时,需要身份验证,在对比之后决定采用PHP+MYSQL进行身份验证。  之前也曾考虑过用cookies或session。但是用cookies,在用户离线再上线后,只要cookies不过期,不用登录仍然可以保持在线...查看完整版>>浅谈PHP+MYSQL身份验证的方法
 
浅谈PHP+MYSQL身份验证的方法
  近日在为学校制做校友录时,需要身份验证,在对比之后决定采用PHP+MYSQL进行身份验证。      之前也曾考虑过用cookies或session。但是用cookies,在用户离线再上线后,只要cookies不过   期,不用登录仍然...查看完整版>>浅谈PHP+MYSQL身份验证的方法
 
浅谈PHP+MYSQL身份验证的方法
浅谈PHP+MYSQL身份验证的方法 作者:梧桐 日期:2001/8/29   近日在为学校制做校友录时,需要身份验证,在对比之后决定采用PHP+MYSQL进行身份验证。      之前也曾考虑过用cookies或session。但是用cookies,在...查看完整版>>浅谈PHP+MYSQL身份验证的方法
 
浅谈通过GPRS进行QQ聊天
当今,电信通讯设备已经很发达,从早期罕见的电话到现在普遍的手机,可以充分显示信息世界通讯的重要性及其发展之迅速。但无论通过电话还是手机要想进行语音通话必须得付一定的话费,如果是长途并且通话达到一个小时以上...查看完整版>>浅谈通过GPRS进行QQ聊天
 
引发画质革命 浅谈佳能C300的神秘技术
引发画质革命 浅谈佳能C300的神秘技术
前不久,佳能在好莱坞发布了旗下首款专业级super35mm可换镜头摄影机。大多数跟笔者一样只玩相机的朋友可能会问,我又不拍电影,这跟我有什么关系呢?其实不然,透过现象看本质,笔者觉得本次发布会具有非凡的意义,甚...查看完整版>>引发画质革命 浅谈佳能C300的神秘技术
 
手机电视-CMMB系统技术应用浅谈
手机电视-CMMB系统技术应用浅谈
第1页:1、系统特点手机电视是融合移动通信和广播电视特点的新业务。随着移动通信网向高速网络演进,手机电视率先以流媒体的形式出现,通过广播电视覆盖网提供实时移动多媒体广播业务成为当代信息科学发展最快的热点...查看完整版>>手机电视-CMMB系统技术应用浅谈
 
浅谈光缆制造技术的介绍及演进-组网技术
浅谈光缆制造技术的介绍及演进-组网技术
1982-1990年中国光缆制造的探索阶段自1982年第一根实用化多模光缆在中国的应用开始,我国的光缆制造和产业化发展已历经30个念头,经历了9年一次的三起三落,发展到今天,形成了世界上最大的光缆产业和相关产业群,年...查看完整版>>浅谈光缆制造技术的介绍及演进-组网技术
 
浅谈大规模跨地域网络管理的建设-组网技术
  当代,由于工作的关联性和资源分布的广泛性,众多的企业和机构都部署了分散的、跨地域的网络系统,这对整体网络建设提出了相当大的挑战。  综合考虑当代各个机构单位的网络管理现状和未来管理模式、网络管理体...查看完整版>>浅谈大规模跨地域网络管理的建设-组网技术
 
 
回到王朝网络移动版首页