PHP 在线聊天系统的实现
在线实时聊天系统,一直是一个比较麻烦的东西。
一般实现在线实时聊天,是利用JS在客户端使用ajax每隔一定的时间就返回服务器请求数据,如果有新的聊天信息则用JS呈现给用户
我们不说这样做的利弊,直接切入正题,如何来实现服务器推的在线聊天系统
首先,我先请大家看一个例子
复制代码
<?php
while(true){
echo "这是一条信息<br />";
flush();
sleep(1);
}
ob_end_flush();
?>
运行后看到什么?是不是每隔一秒就输出一次“这是一条信息”?
这个就可以让我们模拟实现服务器推了
这里先说明一点。例子里面的聊天系统是基于数据库的。当然了,也可以是基于文件系统的,但是基于文件的就比较麻烦了。我们选个简单的,说清楚道理就可以了。
文件的结构如下:
chat.php 主页文件
msgshow.php 聊天信息展示文件
send.php 聊天信息发送文件
conn.php 数据库接口文件
数据表如下
chat表:
msgid 聊天信息ID
msg 信息内容
sendtime 发送时间
senduser 发送人姓名
好,我们正式开始
chat.php文件中,有一个浮动框架连接到msgshow.php文件
chat.php文件代码如下
复制代码
<?php
header ( 'Content-Type:text/html;charset=utf-8' );
?>
<html>
<head>
<title>实时聊天测试</title>
</head>
<body>
<iframe src="chat.php" height=200 width=200>
</iframe>
</body>
</html>
msgshow.php文件代码如下
<?php
require "conn.class.php";
set_time_limit(0);
$conn=new conn();
$timestamp=time(); //这里请注意时区的设置
print str_repeat(' ',4096); //输出4096个空格,因为有的服务器自带有输出缓存,只有达到一定大小或PHP脚本运行完毕后才将内容输出,这一大小一般为4096个字节
while(true){
if(connection_aborted()){
break;
}
//读取所有的新的聊天信息
$chatData= $conn-&
相关文档:
1. PEAR的安装, 这里介绍利用PHP5自带的BAT文件安装,需要能上网。
a. 在PHP5目录下找到go-pear.bat,双击安装(保证能上网, 以便下载),BAT自动从网上下载PEAR所需的东西;
b. 按照提示输入一些设置信息,主要是要把局域网的网关加上,如http://192.168.0.1:80/ , pear要用这个地址访问Interne ......
run_time.php Code:
<?php
class runtime
{
var $StartTime = 0;
var $StopTime = 0;
function get_microtime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->StartTime = $this->get_microtime();
}
f ......
<?php
require_once ('unit_tester.php');
require_once ('reporter.php');
require_once ('../config.php');
require_once ('../source\modules\user\user_api.func.php');
require_once ('../source/base_model.class.php');
Class registertest extends UnitTestCase{
public function testAssertEqual(){
$b ......
重要的PHP超级全局变量总结
2008-07-14 16:53:03
标签:全局变量
[推送到技术圈
]
PHP有9个预定义变量数组,分别总结如下:
1、$_SERVER
$_SERVER超级全局变量包含由web服务器创建的信息 ......
<?php
if($_POST['str'])
{
header('Content-type: application/doc');
header('Content-Disposition: attachment; filename="downloaded.doc"');
echo iconv("UTF-8","GB2312",$_POST['str']);
}
?>
<a href="javascript:void(0)" onclick="downword()">下载</a>
<div id="word" style="dis ......