您现在的位置: 范文先生网 >> 理工论文 >> 计算机信息技术 >> 正文

PHP聊天室技术

时间:2007-1-18栏目:计算机信息技术

PHP聊天室技术

黄国辉

深圳商报社

摘要:  讨论了实现聊天室的各种技术,并以PHP为例讲解实际的编写过程。

关键词:PHP  聊天室    MySQL

1.前言
   

上网聊天是时下最流行的交友方式。各大网站推出的聊天室都各具特色。
    聊天室主要分为WebChat、BBSChat两种。BBSChat是基于Telnet

的Tcp协议,是BBS的附设功能,需要客户端Telnet程序。WebChat则采用浏览器方式,实际上是一个多人共同使用的CGI

程序。其基本原理是把每个用户的发言通过浏览器传给系统,再由系统收集处理后分发给特定用户。
    WebChat一般采用Server Push或Client Pull技术。两种技术的区别在于使用不同的方式将数据分发给用户,Server Push是由服务器将数据以多重MIME

编码,推给(push)使用者端,目前较少网站使用这种方式。Client Pull则是用户从服务器拉(pull)所要的数据。
    最常用的Client Pull

就是利用Html语言的Meta标签http-equiv="Refresh" 的属性,每隔一段时间就检查服务器上是否有新的数据。例如<meta http-equiv="Refresh" content=5>,每隔5

秒钟就会刷新一次页面。这种方法简单有效,缺点是刷新时会产生闪烁的现象;而且为了保持效率,每次刷新都会把旧的聊天内容清除,用户想查看或保留对话内容都很不方便。为此,采用JavaApplet作为聊天室的前端,利用刷新把从服务器Pull的数据通过JavaApplet来显示也是一种解决方案。还有就是本文要介绍的使聊天程序保持连线的方案。方法一,把聊天程序设置为无限大,就能使浏览器不停地保持下载的连线状态;方法二,聊天程序中存在着无限循环,因为可以方便地设置更高级的功能,所以在此选择采用。
    Web服务器采用FreeBSD+Apache

,原因是两者的组合具有最强的性能,而且花费为零。还需要考虑的是用什么方式来存放数据呢。用文件相对而言容易实现,但是多人使用,频繁地对同一文件进行IO操作,难免会影响效率,况且FreeBSD的IO性能不佳。可以考虑使用RamDisk,将文件整个放进内存,以提高速度。或者在内存中划分出一块高速空间用以数据存放。笔者使用的是

[1] [2] 下一页

下页更精彩:1 2 3 4 下一页