PHP DRUPAL : How to detect changes to table in database

标签 php jquery mysql ajax comet

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

这太耗费资源了。我想要:

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

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

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

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

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

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

最佳答案

您可以查看服务器发送的事件

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

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

关于PHP DRUPAL : How to detect changes to table in database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025985/

相关文章:

PHP文件上传停止

php - 使用 PHP 和 CURL 创建新的 etherpad

javascript - 在输入焦点上打开 Windows 10 触摸键盘的数字版本

jquery - 调整窗口大小时获取模态动态调整大小

php - MySQL/PHP : group by classes

mysql - 在过滤的 GROUP BY 查询上优化 MySQL ORDER BY RAND() 以避免临时/无索引连接

c# - 使用 .Net 写入 COM 端口

php - wordpress postgres 数据库连接问题

jquery - Django + jQuery : Why CSRF verification fails on multiple simultaneous requests

java - 如何从Java中的mongodb集合返回数据