php - 如何查找是否有新记录插入?

标签 php jquery mysql ajax

我很难发现表中是否插入了任何新记录。

我的问题

我正在开发便士拍卖网站。在我的网站中,我每秒使用 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_timetable_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/

相关文章:

php - 如何在 CKEditor saving 中使用内联编辑保存、删除、编辑数据到 PHP/Mysql?

PHP "Use of undefined constant length"数组到字符串的转换

javascript - 日期选择器格式 getDate

java - 我们如何通过Jpa获取完整的分层数据列表

javascript - 如何在WordPress中动态生成JavaScript代码?

php - 如何在 Symfony 的 YAML 配置中调用静态方法?

javascript - 如何使用 CSS 或 Javascript 将 <image> 作为背景居中?

jquery - Event.preventDefault() 不起作用?

MySQL限制多对多关系中的行

php - 如何防止 PHP 中的 SQL 注入(inject)?