我有一個不斷更新MySQL數據庫的Ruby腳本。我想實時顯示「mysql_num_rows()
」。所以當一個條目通過Ruby腳本進入數據庫時,我希望PHP腳本實時更新其mysql_num_row()計數。如何在MySQL/PHP中進行實時數據庫輪詢?
我試過使用<meta http-equiv="refresh" content="5">
,但我不認爲這是最好的解決方案。
有沒有人有更好的解決方案?
我有一個不斷更新MySQL數據庫的Ruby腳本。我想實時顯示「mysql_num_rows()
」。所以當一個條目通過Ruby腳本進入數據庫時,我希望PHP腳本實時更新其mysql_num_row()計數。如何在MySQL/PHP中進行實時數據庫輪詢?
我試過使用<meta http-equiv="refresh" content="5">
,但我不認爲這是最好的解決方案。
有沒有人有更好的解決方案?
我會使用ajax更新程序繼續輪詢打印mysql_num_row()的頁面。原型將是一個很好的解決方案:http://www.prototypejs.org/api/ajax/updater
只有PHP和JavaScript的唯一方法是不斷檢查更新,雖然wajiw是正確的,即ajax路由比整個頁面刷新更少干擾/噪音。
這將需要一個應用程序(或小應用程序)與端口/套接字上的常設連接來獲取更新。
在頁面上使用JavaScript定期撥打服務器的電話並獲取一些數據。使用jQuery庫跨瀏覽器支持AJAX的,你只需做到這一點:
jQuery(function($){
setInterval(function(){
$.get('/getrows.php', function(newRowCount){
$('#rowcounter').html(newRowCount);
});
},5000); // 5000ms == 5 seconds
});
這將使您的服務器請求每5秒鐘,堅持不管你發回的元素與結果編號爲rowcounter
,例如
<p>There are <span id='rowcounter'>xx</span> rows in the DB.</p>
這看起來對我來說是最好的解決方案。謝謝你的建議! – ethicalhack3r 2010-11-17 11:16:46
你把什麼放在getrows.php文件?是否需要有任何標籤爲rowcounter或任何HTML標籤? – charlie 2013-09-27 12:03:08
@charlie否:您只需返回一個文本字符串。不需要HTML或JSON(儘管您可以選擇這樣做,jQuery將相應地解析它)。 – Phrogz 2013-09-27 13:09:59
如果你將有大量遊客,最好是你的行數存儲與由cron運行獨立的腳本靜態文件(或無限循環在服務器上運行腳本)。然後用JS顯示這個靜態文件的編號,就像Phrogz建議的那樣。否則,您可以非常快地超出mysql連接限制。
我調整了你的標籤,刪除了ruby,因爲它對於這個問題並不重要,並且添加了jquery,因爲它在選定的答案中很重要。 – 2010-11-21 06:07:57