2010-02-26 77 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;