Heim >Backend-Entwicklung >PHP-Tutorial >关于PHP中的while跟sleep的mysql查询有关问题

关于PHP中的while跟sleep的mysql查询有关问题

WBOY
WBOYOriginal
2016-06-13 11:53:36970Durchsuche

关于PHP中的while跟sleep的mysql查询问题

<br />$sql="select * from table where id='1' ";<br />$num = mysql_num_rows(_query($sql));<br />while (true){      <br />   // $num2 = mysql_num_rows(_query($sql));<br /><br />//这个地方怎么写啊*******<br />    sleep(1)<br /><br /><br />   //若得到数据则马上返回数据给客服端,并结束本次请求      <br />    <br />    if(数据库有新记录){      <br />alert('有新记录');     <br />        exit();      <br />    }      <br />          <br />    //服务器($_POST['time']*0.5)秒后告诉客服端无数据      <br />    if(没有新记录){      <br />  alert('没有更新记录');          <br />        exit();      <br />    }   <br /><br />}<br />


相实现功能通过无限循环查询数据库有没有更新新的记录;

我是采用的是ajax长连接,长轮询查询的
------解决方案--------------------
不要用sleep,因為那會讓你的程序半天無法顯示到客戶端,正確的作法應該是ajax每隔1秒查一下最新id即可.
思路如下:
1.初始狀況下本地的cookie內最新id的值為0
2.延遲1秒ajax请求服务器上数据库内的最新id,取得之后把最新id和和cookie内的id值作比较,如果两个值不同,则认为有新的纪录产生,此时执行你想要的操作.然后把新取得的id值赋值给cookie
3.再延迟一秒ajax再次请求,取得数据库内的最新id,用这个id和cookie的id作比较,如果两个值相同,则说明没有新的记录产生

思路如上,代码你自己写吧,记得sleep会导致你的程序执行结果很久不能push到客户端,所以用户会长期处于等待状态,这样做不好.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn