现在我们就要通过这种方法来实现实时通信,先说一下原理:
客户端发起一个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); }