有一个简单的模拟即时通讯的php代码,代码如下:
<?php
set_time_limit(0);
ob_start();
$pad = str_repeat(' ', 4000);
echo 'OK<br />';
ob_flush();
flush();
$conn = mysqli_connect('localhost','root','');
mysqli_query($conn,'use test'); <br />
while (1) {
$sql = 'select * from msg where flag = 0';
$rs = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($rs);
if(!empty($row)) {
echo $pad,'<br />';
echo $row['content'],'<br />';
mysqli_query($conn,'update msg set flag=1');
}
ob_flush();
flush();
sleep(1);
} ?>
代码可以正常运行,可以有个小问题就是每次在mysql里插入两个数据后浏览器才会收到apache服务器传来的数据再显示出来。
请问可以怎么优化一下?
查了一下关于flush()函数的用法,有一句说:“一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。”,虽然我用的是chrome,但是我把‘$pad = str_repeat(' ', 4000); ’改成‘$pad = str_repeat(' ', 40000); ’后,在表里添加一个数据,浏览器上马上就能显示了。