我写了一个小脚本,它使用了长轮询的概念。
它的工作原理如下:
我已经处理了所有安全检查。问题是当记录被删除或更新时,无法知道这一点。
我能得到的最近的解决方案是计算行数并将其与一些保存的行计数变量匹配。但是,如果我有1000条记录,我必须回应所有1000条记录,这可能是一个很大的性能问题。
此应用程序的CRUD功能完全分离,并在不同的服务器中运行。所以我不知道哪条记录被删除了。
我不需要任何编码帮助,但我正在寻找一些建议,以便在更新和删除时使其工作。
请注意,websockets(my fav)和node.js对我来说不是一个选项。
答案 0 :(得分:1)
您可以检查表格本身何时被修改,而不是使用表格中的某个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
。我正在使用一种非常类似的技术来显示和自动刷新日志,就像一个魅力。
您必须根据需要调整语句,并将yourdb
和yourtable
替换为您的应用程序所需的值。它还要求您有权访问information_schema.tables
,因此请检查这是否可用。
两种替代解决方案:
lastid
结合使用以覆盖新插入答案 1 :(得分:0)
您可以通过
获得最高IDSELECT id FROM table ORDER BY id DESC LIMIT 1
但是我认为这不可靠,因为你可以拥有1,2,3,7的ID,并且你插入一个ID为5的新行。
请注意:最高ID,不一定是最近的行。
当前的自动增量值可以通过
获得SELECT AUTO_INCREMENT FROM information_schema.tables
WHERE TABLE_SCHEMA = 'yourdb'
AND TABLE_NAME = 'yourtable';
也许时间戳+ microtime是你的选择吗?