现在我们就要通过这种方法来实现实时通信,先说一下原理:
客户端发起一个ajax长链接查询,然后服务端就开始执行代码,主要是检查某个文件是否被更新,如果没有,睡一会(sleep),醒来接着检查
如果客户端又发起了一个正常请求),服务端收到后,处理请求,处理完毕后,这时醒来长链接查询继续查找。//防止请求超时set_time_limit(0);//打开输出缓冲控制ob_start();$pad = str_repeat('-', 100);echo $pad . "";//输出缓冲区中的内容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'] . ""; echo $pad . ""; } flush(); ob_flush(); //延缓一秒执行 sleep(1);}