【问题标题】:PHP DRUPAL: How to detect changes to table in databasePHP DRUPAL:如何检测数据库中表的更改
【发布时间】:2015-09-10 14:55:31
【问题描述】:

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

这太耗费资源了。我要:

  1. 服务器仅在两个表之一发生更改时才查询数据库。
  2. 只有在表已更新且服务器已重新处理数据时,页面才会通过 AJAX 重新加载页面。

我认为这属于彗星编程的范畴。我不确定。

2 很简单。该网页每 17 秒(或更少)调用一次“update.php”。如果没有进行任何更改,PHP 脚本不会返回任何数据。仅当返回数据时,当前页面才会被新数据替换。如果有更好的方法,请告诉我。

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

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

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

【问题讨论】:

    标签: php jquery mysql ajax comet


    【解决方案1】:

    您可以检查服务器发送事件

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多