我很难发现表中是否插入了任何新记录。
我的问题
我正在开发便士拍卖网站。在我的网站中,我每秒使用 JQuery ajax 更新客户端 View 。最后出价者用户名、avater、价格和许多内容都已更新。但是当出价时,我想对特定产品实时应用闪光效果 here 。我尝试了以下 Mysql 查询来查找是否有最后的出价。
SELECT CASE WHEN COUNT(*)=0 THEN 'N' WHEN COUNT(*) > '0' THEN 'Y'
END AS is_bid FROM table_bid_history WHERE product_id = '$value' AND
( date_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 SECOND) AND NOW() )
基本上,我将最后一个出价者详细信息存储在带有时间戳列date_time的table_bid_history
表中。我每秒向服务器端发送 ajax 请求,以使用递归函数获取最后更新。所以我的想法是负1秒检查正确时间,所以我使用了(date_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 SECOND) AND NOW())并且它有效。但在某些情况下,延迟的ajax轮询使这个想法变得错误,这意味着有时ajax请求需要超过1秒,所以我无法从服务器获得正确的结果。如果我设置INTERVAL 2 SECOND,那么它会给出两次Y。所以我很困惑在这种情况下该怎么办。
请帮助我获取表中的最后一个事件。他们是如何做的。任何想法将不胜感激!
提前致谢
最佳答案
不要查询最后一秒是否有出价,而是查询自上次已知出价以来是否有任何新出价。因此,在您的 jQuery 代码中,存储您知道的最后一次出价的date_time
。然后,通过 AJAX,查看您的 table_bid_history
中是否有任何出价的 date_time
比 jQuery 脚本中存储的 date_time
更新。如果有,则 flash 以获得效果(当然,存储较新的 date_time
以便稍后进行更多查询)。
PS:您可能想研究一下长轮询。这可能比每秒疯狂地重新检查更节省资源。
关于php - 如何查找是否有新记录插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078514/