abc1415035017 2015-01-22 23:37 采纳率: 0%
浏览 1668

ajax推技术,在线服务器端向客户端发送数据

ajax推技术,用浏览器访问该网页后,为什么我的代码每次用insert 向数据库插入数据后,当第三次插入数据的时候才会有效果,将$mes显示在浏览器上?
代码如下:
<?PHP
header("content-type:text/html;charset=utf-8");
set_time_limit(0);//设置服务器脚本的最大执行时间。

$conn=mysql_connect('localhost','root','123456');
mysql_query('use test',$conn);
mysql_query('set names utf8',$conn);
echo str_repeat(' ',4500);
echo 'welcome you';
//首先将welcome推送出去。
ob_flush();
flush();
while(true){
$co=mysql_query( "select * from mes where flag=1",$conn);
$row = mysql_fetch_assoc($co);

    //echo 'ni';
    if(!empty($row)){
           echo str_repeat(' ',4500);
            //echo'<pre>';
            //echo $row['name'];
            //echo'</pre>';
            $mes = json_encode($row);
            //echo "<script type = 'text/javascript'>";
            //echo "alert($mes);";
            //echo "</script>";
            echo 'ni';
            $co=mysql_query( "update mes set flag = 0 where id= ".$row['id'],$conn);
            ob_flush();//这两行应该放在if语句内部,因为我们检索到有消息后才能推送消息,如果放在if外部,那么每次循环都会推送信息,这样后者会浪费服务器资源。
            flush();
    } 

    sleep(1);

}
/*

数据库:
mysql> select *from mes;
+-----+------+------+------+
| id | mes | flag | sign |
+-----+------+------+------+
| 1 | 1 | 0 | 1 |
| 2 | 1 | 0 | 1 |
| 3 | 1 | 0 | 1 |
| 4 | 1 | 0 | 1 |
| 108 | 1 | 0 | 1 |
| 109 | 1 | 0 | 1 |
| 110 | 1 | 0 | 1 |
| 111 | 1 | 0 | 1 |
| 112 | 1 | 0 | 1 |
| 113 | 1 | 0 | 1 |
+-----+------+------+------+

效果:我们每次用mysql> insert into mes (mes,flag,sign) values(1,1,1);
那么该信息会立刻显示在前台浏览器,实现在线服务器端向浏览器推送数据。

建表代码:
| mes | CREATE TABLE mes (
id int(11) NOT NULL AUTO_INCREMENT,
mes varchar(100) DEFAULT NULL,
flag tinyint(4) DEFAULT '0',
sign tinyint(4) DEFAULT '0',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=115 DEFAULT CHARSET=utf8 |
*/

?>

  • 写回答

4条回答

  • oyljerry 2015-01-22 23:42
    关注

    要看服务器有没有发送数据,浏览器怎么处理的

    评论

报告相同问题?

悬赏问题

  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?