大头

方向ajax(http long request实现实时通信)

现在我们就要通过这种方法来实现实时通信,先说一下原理:

客户端发起一个ajax长链接查询,然后服务端就开始执行代码,主要是检查某个文件是否被更新,如果没有,睡一会(sleep),醒来接着检查
如果客户端又发起了一个正常请求),服务端收到后,处理请求,处理完毕后,这时醒来长链接查询继续查找。

//防止请求超时
set_time_limit(0);
//打开输出缓冲控制
ob_start();
$pad = str_repeat('-', 100);
echo $pad . "<br/>";
//输出缓冲区中的内容
ob_flush();
// 刷新输出缓冲
flush();
$connect = mysqli_connect('localhost', 'root', '');
if (!$connect) {
    die('连接失败');
}

$i = 1;
while ($i++) {
    mysqli_query($connect, 'use  test');
    /// 注意关键字
    $query = mysqli_query($connect, 'select * from test where `read` = 0 limit 1');
    $res = mysqli_fetch_assoc($query);
    //更新
    $update =mysqli_query($connect, "update test set `read` = 1 where id={$res['id']} ");
   if(!empty($res)){
       echo 'update result:'.$update.'    '.$res['user'] . "<br/>";
       echo $pad . "<br/>";
   }
    flush();
    ob_flush();
    //延缓一秒执行
    sleep(1);
}热烈的笑脸
posted @ 2017-03-13 10:52  and大头  阅读(205)  评论(0)    收藏  举报

大头