基于PHP的网络聊天室系统
摘要:我们生活在一个通信变得非常重要的世界里,人们需要同他人快速容易的进行交流。E-mail、电话、邮件以及在线聊天是以书写文字的形式让人们进行思想交流的媒体。通信时一个重要的方面是对方的响应。网络聊天室是Internet上最常见的服务之一,深受广大网民的欢迎。本文主要针对使用PHP+MYSQL技术实现网络聊天室进行分析与探讨,对其平台、各种工具及其使用的方法进行了相关的介绍。
关键词:网络聊天室,PHP,MYSQL
Internet chat rooms system based on PHP
LI Tao, CHENG Lu-yu
Abstract:We live in a communications world which has become very important, people need comminute quikly and easily with the others.E-mail,telephone,mail and online chat is in the form of written words for the people to carry out ideological and media.The important thing is aspect of the opponent’s response. Internet chat rooms on the Internet is one of the most common services,It welcomes by the most of netizens.In this paper,the Internet chat rooms use PHP+MYSQL technology for analysis and discussion,the platform,the use of various tool and methods related introduce.
Key words: Internet chat rooms,PHP,MYSQL
1.PHP与MYSQL技术的现状与分析比较
1.1 PHP与MYSQL技术现状历史背景
1.1.1 PHP技术的介绍与分析
PHP 为递归的缩写名称, 即“PHP: Hypertext Preprocessor”, 它是一种HTML 内嵌式的语言。其独特的语法混合了C、JavaPerl。 它可以比CGI 或者Perl 更快速的执行动态网页。目前PHP 已推出第五版, 整个程序的核心作了很大的改动, 采用了新的引擎, 加入了对Session 的支持。程序执行速度更快、效率更高、功能更多、函数更全。
PHP 最大的优势在于它是遵循GNU 标准的自由软件。而在Internet 上它也支持相当多的通讯协议, 包括IMAP、POP3、SNMP、NNTP、NIS、HTTP、LDAP 以及其它网络的相关函数。同时用PHP 写出来的Web 后端CGI 程序, 可以很轻易的移植到不同的系统平台上。比如, 先以Linux 架设的网站, 在系统负荷过高时, 可以快速地将整个系统移到SUN 工作站上, 不用重新编译PHP 程序。总的来说, 它有以下几方面的优点:
(1)支持的数据库非常广泛, 大到SYBASE, MSSQL, ORACLE,小到MYSQL 之类都支持。
(2)跨平台性非常好, 支持Windows 系列操作系统、LINUX 操作系统和UNIX 操作系统。同时支持APACHE, IIS 等多种WEB信息服务器。
(3)自由软件, 升级非常快。
(4)免费软件, 无需花钱购买。可以登陆到http://www。php。net/免费下载和安装。
(5)PHP 有成熟的面向对象体系, 能够适应基本的面向对象要求。适合开发大型项目。
本系统选用MySQL 作为后台数据库。它支持WindowsX以及UNIX、Linux 和SUN OS 等多种操作系统平台。其应用可以很方便地移植到其他的操作系统下。
1.1.2 MYSQL技术的介绍与分析
一个运行稳定、数据量巨大的网络聊天室,必然需要一个运行稳定、功能强大的后端数据库,有的用户可能会考虑到Orancle这样成熟、深受人们好评的大型数据库管理系统,但是要使用类似Orancle这样的大型软件往往需要付出高昂的代价,包括购买软件以及雇佣高级技术人员的费用。而对于一般的网络聊天室,只要用MYSQL数据库就可以达到非常理想的效果。MYSQL数据库的出现和发展,使人们形成了使用PHP必用MYSQL的习惯,这使得PHP发展的速度得到了进一步提高。MYSQL引进了许多全新的概念和设计思想。如MYSQL是真正多线程、多用户的数据库系统,真正支持多平台,在数据客户端程序上,MYSQL提供了多种不同的API等等。虽然MYSQL是一种小型的SQL数据库,但是由于在设计上采用了多项革新技术,使得其整体性能与SQL相比有很大的提高。在基于Internet的数据库产品中,对产品最为注意的莫过与数据库检索的速度了,其他的要求不过是适当的规模和足够的可靠性,这些特点使MYSQL得到广泛应用。
在对MYSQL数据库的操作上,PHP一共有32个函数可供操作。这些函数包括了MYSQL的各个方面,包括操作MYSQL数据库的PHP函数,链接数据服务器的函数,选者数据库的函数,发送SQL查询的函数等等,使得PHP操作数据库的能力更为强大。总的来说, 它有以下几方面的优点:
(1)开发队伍庞大:MySQL 是世界上最为流行的开放源码数据库, 因此很容易获得高素质和有经验的开发团队。
(2)跨平台支持:MySQL 可用于20 多种不同的平台, 包括主要的Linux 系统、Mac OS X、Unix 和Microsoft Windows。
(3)平台自由: 源代码随时可访问, MySQL 策略确保了自由性,以防锁定于某个公司或平台内。
(4)易于使用和部署:MySQL 的结构体系易于定制, 而且速度极快。其独特的多存储引擎结构为企业客户提供了广泛的灵活性, 赋予数据库管理系统以卓越的紧致性和稳定性, 并且易于部署, 同时具有无与匹敌的速度。
(5)PHP 与MySQL 是Linux 平台下的绝佳组合。
1.2 PHP与ASP比较
Microsoft Active Server Pages 即我们所称的ASP, 其实是一套微软开发的服务器端脚本环境, ASP 内含于IIS3。0 和4。0 之中,通过ASP 我们可以结HTML 网页、ASP 指令和ActiveX 元件建立动态、交互且高效的WEB 服务器应用程序。
自从微软推出A SP 技术后, 由于其在建立动态网站方面的强大功能, 很快得到了广泛的应用。但由于众所周知的原因,A SP 只能用于微软自己的操作系统和服务器系统。目前基于U n ix 的网络系统仍然占据大多数。而L inux 操作系统由于其免费提供和开放源代码很受欢迎, 其市场占有率迅速上升。Apache 服务器始终是网络站点的主流服务器软件。PHP 的出现和逐渐完善, 对基于U n ix、Linux 系统的网络开发人员来说, 无疑提供了一个新的服务器端脚本技术。
1.3.1 PHP工作过程
PHP是一种服务器端语言,这意味着用PHP编写的代码将驻留在称为服务器的主机上。服务器发送Web页面给发出请求的访问者。
当访问者到达用PHP编写的Web站点时,服务器读取PHP代码,然后依据其脚本指令处理它。在下图所示中,PHP代码告诉服务器发送合适的数据如HTML代码给Web浏览器,Web浏览器再把接收到的代码处理成标准HTML页面。
1.3.2 对开发人员的技术要求
开发人员应掌握以下工具:
Web服务器应用程序(如,Apache)
PHP
MYSQL
Web浏览器
文本编辑器、支持PHP的所见即所得应用程序(如Dreamweaver)或IDE
2.聊天室历史与现状比较
网络聊天室的实现方案有多种,目前常见的包括:基于CGI、基于JAVA、基于ActiveX和基于ASP的实现方案。各种方案都有其独到之处,需要根据场合选用。
2.1.1 基于CGI的聊天室
CGI(通用网关接口)往往被认为是一种效率较低的WEB动态页面实现方式。这是因为对于客户端的每个CGI要求,服务器端都会产生一个新的进程。
一般来说,基于CGI方式的聊天室程序的设计思想是这样的:将每个聊天用户的发言(Message)按后进先出的顺序存入到数据库或文件中,并在用户端进行定时刷新来获取最新的Message数据。
2.1.2 基于JAVA的聊天室
基于JAVA的聊天室其过程是这样的:在返回给客户端的HTML页面里插入Java Applet,该Applet与Web服务器上运行的专用聊天服务器程序进行链接,当客户端用户输入新发言时,发言被传送到聊天服务器并由其向其他的聊天用户进行广播。Java聊天室的最大优点是在网络带宽比较理想的前提下,能真正做到实时性。
总所周知,Java是一种跨平台的语言,也就是说,用Java编写的程序具有很高的可移植性,可事实上并非如此,Java程序员所头疼的事情,这主要表现在中文文本的读写、中文的输入输出、中文的网络传输等方面,汉字的GB内码往往被当作Unicode码进行处理而导致乱码。
2.1.3 基于ActiveX的聊天室
基于ActiveX的聊天室其实现过程类似于前文所述的Java聊天室。在返回给客户端的HTML页面里插入ActiveX控件,该ActiveX控件与WEB服务器上运行的专用聊天服务程序进行链接,当客户端用户输入新发言时,发言被传送到聊天服务器并由其广播。和Java Applet一样,ActiveX控件实现了实时聊天。
不过话又说回来,由于ActiveX能够存取客户机的所有资源,所以安全性成为该技术流行开来的最大障碍。当下载的网页中包含ActiveX控件时,浏览器用户必须确认该控件带有可以信赖的公司的电子签名,才敢放心执行。ActiveX的另一缺陷是它只能运行于Windows平台,而且只能同IE浏览器配合较好,对于Netscape的用户来说,必须下载专门的PlugIn才能查看ActiveX网页。
2.1.4 基于ASP的聊天室
ASP因为其使用简单的VBScript语言以及方便的连接后端数据库等特性而成为NT+IIS平台的首选技术。使用ASP编写出的聊天室代码很少,其原理类似前文所述的CGI聊天室,不过聊天信息现在可以不用存放到文件或数据库中,而是存放到Application对象里。
每一个ASP应用都会有一个Application对象,所有进入该应用的浏览器客户可以存取到共享的Application对象。同时每个客户都有自己的会话对象Session。这样我们可以在Application对象里放置发言缓冲区,在Session对象里放置每个聊天用户的名字。
3.基于PHP的网络聊天室系统的发展前景
现在有许多商业的产品如C2’s StrongHold web server 和Red Hat Linux 都支持PHP5或PHP/F I。由于PHP 的众多优秀功能, 国外愈来愈多的站点已开始使用 它来进行后台的开发, 到目前为止, 已有2000万个以上的站点使用PHP5 进行开 发。国内一些有识之士也开始尝试使用, 获得了非常好的效果。有理由相信, 如此优秀的CG I 语言, 必将会大规模地扩散开去, 成为站点开发的有力工具。
4.结论
采用PHP编写的聊天室,为了实现不刷新,用户必须保持连线的状态。实现方法是在程序中设置无限循环,每隔一段时间就检查服务器上是否有新的数据。而发言数据不宜存放在文件中,否则频繁的IO操作对系统效率影响很大:可采用MYSQL数据库,以适应大批量用户的同时使用。用PHP编写的聊天室具有高效稳定的特点,可以承受大批用户的同时使用。