mysql - 从 MySQL 表中记录轮询

标签 mysql polling records

从 MySQL 表中为多个连接的客户端获取记录的最佳方式是什么,这些客户端同时并定期检索记录。

因此,当新记录进入表时,每个人都会收到新消息,但旧消息不应再次检索。

当前表结构: MessageId、消息、发布日期、MessageFromID

谢谢

最佳答案

您的问题可以转化为:每个客户如何知道哪些记录要读取,哪些记录不读取。

有两种完全不同的方法,具有截然不同的属性。

  1. 让客户关心这一点
  2. 让服务器来处理

模型 #1 非常简单地要求您

  • 如果您的 MessageID 不能保证递增,请在某些字段上使用诸如 AUTO_INCRMENT 之类的内容
  • 在服务器上,不仅向每个客户端提供消息,还向其提供 ID
  • 让客户端保留此 ID 并将其用作下一次轮询的过滤器

模型 #2 需要你

  • 还有另一个包含“ClientID 和 MessageID”的表
  • 每当客户端收到消息时,就在那里创建一条记录
  • 使用不存在的此类记录作为轮询过滤器

关于mysql - 从 MySQL 表中记录轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10580148/

相关文章:

c++ - 为套接字轮询/选择设置超时值的最佳做法是什么?

python - 使用 select/poll/kqueue/kevent 监视目录中的新文件

java - 由多个进程同步轮询文件中的对象列表

arrays - 无法为具有记录数组的对象赋值

mysql - 删除mySQL中的相同记录

PHP PDO 使用 bindParam 第一个参数(不带冒号)

php - ios 比较 memcache 和 core data

java - MySQL JDBC 插入多对多对象而不添加重复项

mysql - 尝试根据 SQL 中的先前行父级递归选择行

Java数组记录