2015-06-24 44 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); 
相关问题