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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?