php - 保持 MySQL 数据库与轮询数据同步

标签 php mysql sql database pdo

我遇到了一个有趣的情况,我不断地从服务器轮询数据。我无法控制它提供的内容,所以我只能处理它给我的内容。

我正在记录它提供的一些信息,并将其存储在 MySQL 数据库中。这并不是真正的问题,但是,我的问题是如何有效地保持数据与数据库同步。

例如,在某一时刻我可以有 3 个 ID 1001、1002、1003。我可以将它们插入数据库就好,但是如果我现在有 1001 和 1003 该怎么办?最有效的更新方法是什么数据库反射(reflect)这一点?基本上,我只知道我现在拥有什么,如果不自己在 PHP 中计算,我无法知道发生了什么变化。

我想我可以选择,找到差异,然后为丢失/添加的 ID 发出 DELETE/INSERT。或者也许是一个 DELETE NOT IN () 然后一个 INSERT.. 但由于这个脚本一直运行,我担心这不会很有效。

我的另一个想法是简单地为每个“玩家”制作一行,并使用 CSV 分隔的 ID 列表。每次迭代我都可以更新该玩家的行,而不是选择/删除/插入。

有没有人遇到过类似的问题并找到了好的解决方案或有一些见解?我将不胜感激!我正在使用 PHP。

最佳答案

如果我明白你的要求,也许你可以尝试REPLACE INTO

http://www.mysqltutorial.org/mysql-replace.aspx

如果要插入的记录不存在,MySQL REPLACE 会插入一条新记录。

如果要插入的记录已经存在,MySQL REPLACE会先删除旧记录,然后插入新记录。

这将阻止您选择、删除和插入。这处理了。

关于php - 保持 MySQL 数据库与轮询数据同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056833/

相关文章:

mysql - 如何收集图表数据

mysql - SQL选择所有匹配的

android - 是否有任何 Sqlite select 查询来获取两个表结果?

php - 我如何从多个表单中获取值并提交它们?

mysql - 高级 SQL 选择获取具有不同标题名称的相同列值

php - 未知扩展名时检查文件是否存在

PHP 认为我的非空 DSN == null

mysql - 利用在一个 SQL 查询中完成的工作来简化第二个 SQL 查询?

PHP exec() 作为后台进程(Windows Wampserver 环境)

javascript - 使用jquery加载外部php文件?