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 镍氢电池充电器设计实物使用原理
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号