2015-06-24 35 views
0

當前情況:我有一個使用AJAX/JQUERY每17秒刷新頁面上所有內容的網頁。每次發生這種情況時,服務器都會向數據庫查詢來自兩個表(其中一個很大(450MiB大小,11列))的數據並處理所有數據。PHP DRUPAL:如何檢測數據庫中表格的更改

這太耗費資源。我想要:

  1. 服務器僅在兩個表中的一個已更改時才查詢數據庫。
  2. 僅當表已更新並且服務器已重新處理數據時,頁面纔會通過AJAX重新加載頁面。

我認爲這屬於彗星編程的範疇。我不確定。

很容易。該網頁每17(或更少)秒呼叫'update.php'。如果沒有更改,PHP腳本將不返回任何數據。只有在返回數據時,當前頁面纔會被新數據替換。請告訴我,如果有更好的方法。

至於我的谷歌搜索會告訴每一個我的兩個表中的一個被更新時,我可以把一個通知,一個表(或者只是在文件中的單字節)來表示,我必須再次查詢數據庫然後當網頁下次發送一個AJAX請求時,我會返回數據。

問題是,我正在使用一個相當大的代碼庫,我沒有寫,也不知道兩個表中任何一個可能被更新的地方。有沒有一種更簡單的方法來檢查數據庫何時被修改。

我正在使用PHP,Apache,Drupal和MYSQL。

回答

0

可以chekout 服務器發送活動

服務器發送的事件是,當一個網頁會自動從服務器獲取更新。

有上HTML5rocks.com - Server Sent Events

的優秀文章所有你所要做的就是創建一個對象

var source = new EventSource('xyz.php'); //Your php files which will return the updates. 

一旦你創建了一個對象,你可以聽的事件

source.addEventListener('message', function(e) { 
    console.log(e.data); 
}, false); 
相關問題