PHP DRUPAL:如何检测数据库中表的更改

时间:2015-06-24 12:02:13

标签: php jquery mysql ajax comet

目前的情况:我有一个网页,使用AJAX / JQUERY每17秒刷新页面上的所有内容。每次发生这种情况时,服务器都会向数据库查询两个表中的数据,其中一个表很大(450MiB,11列)并处理所有数据。

这太耗费资源。我想要:

  1. 只有当两个表中的一个发生更改时,服务器才会查询数据库。
  2. 只有在表格更新且服务器重新处理数据后,页面才会通过AJAX重新加载页面。
  3. 我认为这属于彗星编程的范畴。我不确定。

    2 很容易。网页每17(或更短)秒调用'update.php'。如果没有进行任何更改,PHP脚本将不返回任何数据。仅在返回数据时,才会将当前页面替换为新数据。如果有更好的方法,请告诉我。

    至于 1 我的谷歌搜索告诉我每次更新我的两个表中的一个时,我可以在表中(或者可能只是文件中的一个字节)发出通知,表明我必须再次查询数据库,然后下次网页发送AJAX请求时返回数据。

    问题是我正在处理一个我没有编写的相当大的代码库,而且我不知道两个表中任何一个可能被更新的所有地方。是否有更简单的方法来检查数据库何时被修改。

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

1 个答案:

答案 0 :(得分:0)

您可以删除服务器已发送事件

服务器发送的事件是指网页自动从服务器获取更新。

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);