關於PHP中的while跟sleep的mysql查詢有關問題

來源:互聯網
上載者:User
關於PHP中的while跟sleep的mysql查詢問題

$sql="select * from table where id='1' ";
$num = mysql_num_rows(_query($sql));
while (true){
// $num2 = mysql_num_rows(_query($sql));

//這個地方怎麼寫啊*******
sleep(1)


//若得到資料則馬上返回資料給客服端,並結束本次請求

if(資料庫有新記錄){
alert('有新記錄');
exit();
}

//伺服器($_POST['time']*0.5)秒後告訴客服端無資料
if(沒有新記錄){
alert('沒有更新記錄');
exit();
}

}


相實現功能通過無限迴圈查詢資料庫有沒有更新新的記錄;

我是採用的是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到用戶端,所以使用者會長期處於等待狀態,這樣做不好.
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.