2010-02-26 63 views
0

我有一个小问题,我相信有一个更方便/更简单的方法来实现解决方案,但所有的搜索现在都在填补空白!在表中保存mySql行检查点?

我有一个定期通过php页面[通过cron作业]更新的mysql数据库,可以根据需要添加或删除条目。

我的问题是,我还需要检查条目的任何细节[即电话号码或类似]是否已更改,但在每次调用时都不能这样做[不仅对我来说似乎是过度杀伤,但我受限于第三方API调用限制]另外,这不是关键信息。

所以我认为最好只检查每个页面的一个条目的调用,并在每个连续的页面调用中遍历行/条目。

这样做的最好方法是什么?即跟踪表中哪个条目/行应该被检查下来?

我如何实现这2个观点:

1)当前行的ID可以保存到服务器上的文件[肯定不是最好的方式]

2)一个额外的布尔字段[检查]被添加到表中,在第一个条目中设置为True,在所有其他条目中设置为false。 然后在每个页面上调用它; 认定“其中校验= TRUE” 运行在该行更新检查, “设置校验= FALSE” “设定[下一行]检查= TRUE”

的Si这要做到这一点的最佳方式,或有没有人有更好的消化?

在此先感谢!

.K

PS关于标题

+0

你是不是很清你的限制是什么。 API?什么API?如果您无法改变API本身或者无法真正访问数据,那么可能就没有真正的解决方案。这取决于你的API的限制 – MindStalker 2010-02-26 20:20:50

+0

很抱歉,如果不明确,但我认为它不是真的对我的问题很重要,我已经说过它是第三方api [因此我无法更改它] 这就是说,如果它有助于它是Twitter的API,其中强制150请求限制。 基本上是一个用户追随者的请求,每隔几分钟对api进行一次请求,然后将其与一个db中的追随者列表进行比较,将新的追随者添加到db中,并且现在将更多的追随者删除。这是好的[n + 1个请求,其中n是新的追随者] – Keet 2010-02-26 23:21:40

+0

问题是用户可能已经改变了他们的名字图像等[存储在数据库中]。我需要检查这些变化,但每次检查都是过度的[更不用说api限制的问题],所以我认为一次检查1项是最好的。因此,我的问题是,跟踪应该检查/更新下一个记录的最佳方式是什么? – Keet 2010-02-26 23:24:45

回答

0

不知道这是一个很好的解决方案很抱歉,但如果我必须做出巨大的夜间更新,我会写的更新到新的空白表,然后做一个SQL选择联接表,并告​​诉我,他们是不同的,然后做另一个SQL UPDATE像

UPDATE table, temptable 
SET table.col1=temptable.col1, table.col2=temptable.col2 ...... 
WHERE table.id = temptable.id; 
+0

谢谢,但这不是我的问题,我一次更新[或替换]一行。 [即1 api电话] 我的问题是,我可以比较/更新所有的条目,因为这将是太多的API调用。 – Keet 2010-02-26 20:17:30

0

可以存储连续使用ON UPDATE CURRENT_TIMESTAMP [http://dev.mysql.com/doc/refman/5.0/en/timestamp.html]或明确暗示更新的时间戳你的更新SQL。然后,您只需选择具有最低时间戳的行(使用ORDER BY和LIMIT),并且您可以处理下一行。只要您确保每次更新时间戳。

例如假设您使用last_polled_on字段来存储轮询一行的时间。 你插入的样子:

你更新的样子:

UPDATE table SET ..., last_polled_on = NOW() WHERE ...; 

而你选择像下一行轮询外观:

SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;