php - 使用 PHP 和 jQuery 进行长轮询 - 更新和删除问题

标签 php jquery mysql

我写了一个使用长轮询概念的小脚本。

它的工作原理如下:

  • jQuery 将带有一些参数(比如 lastId)的请求发送给 php
  • PHP 从数据库中获取最新的 id 并与 lastId 进行比较。
  • 如果 lastId 小于新获取的 Id,则终止
    脚本并回显记录。
  • 在 jQuery 中,我显示了这个输出。

我已完成所有安全检查。问题是当记录被删除或更新时,没有办法知道这一点。

我能得到的最接近的解决方案是计算行数并将其与一些已保存的行计数变量相匹配。但是,如果我有 1000 条记录,我必须回显所有 1000 条记录,这可能是一个很大的性能问题。

此应用程序的 CRUD 功能完全分离并在不同的服务器上运行。所以我不知道删除了哪条记录。

我不需要任何编码方面的帮助,但我正在寻找一些建议以在更新和删除时完成这项工作。

请注意,websockets(我的最爱)和 node.js 不适合我。

最佳答案

除了使用表中的特定 ID,您还可以检查表本身上次修改的时间。

SQL:

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'yourdb'
    AND TABLE_NAME = 'yourtable';

如果成功,语句应该返回类似的东西

UPDATE_TIME
2014-04-02 11:12:15

然后使用生成的时间戳代替 lastid。我正在使用一种非常相似的技术来显示和自动刷新日志,效果非常好。

您必须根据需要调整语句,并将 yourdbyourtable 替换为您的应用程序所需的值。它还要求您有权访问 information_schema.tables ,因此请检查这是否也可用。

两种替代方案:

  • 如果上述解决方案对于您的目的而言过于不精确(当表格每秒更改多次时可能会导致问题),您可以将该时间戳与您当前的机制结合使用 lastid 来覆盖新插入物。
  • 另一种方法是实现一个记录当前状态的表。这是您的 ajax 请求检查当前状态的地方。然后生成triggers在您的数据表中,更新此表。

关于php - 使用 PHP 和 jQuery 进行长轮询 - 更新和删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22805569/

相关文章:

python - 如何避免 MySQL 警告升级为 Django 应用程序中的异常

python - Python 2.5 中的 MySQL

带分区的 Mysql 查询比不带分区花费更多时间

php - JSON 编码和大引号

javascript - 传递值以仅打印、pdf 预览或在 excel 中打开

javascript - 使用 on change 事件将多个输入保持在所需范围内

javascript - 为什么 .size() 不能按我想象的方式工作?

php - 添加记录之前如何检查其他表中是否存在外键

php - 将主干模型保存到 php

php - 获取目录中图像的文件名