2010-09-26 25 views
0

我有以下情形:PHP MySQL和隊列,表鎖定,讀/寫問題

PHP(Server, Writer) ----> MySQL Database <------ PHP(Client, Reader/ Writer); 
  • PHPS = PHP服務器
  • PHPC = PHP客戶

它是如何作品?

  1. PHPS將數據寫入臨時數據庫表(queue_ *)。
  2. PHPC由1小時cron觸發。
  3. PHPC開始,連接到數據庫,並在本地緩存中的所有記錄(怎麼?不知道,當地的MySQL數據庫?SQLite的?)
  4. PHPC逐一
    • 執行這些記錄定義的任務如果任務成功的話將其從數據庫中刪除
    • 如果它不成功,它會在報表中的數據庫中添加該記錄。

如何實現這使得

  • 從PHPS沒有一半的文字記載得到PHPC。
  • PHPC可以在一次查詢後在本地緩存所有記錄來處理它們。

任何其他的想法,你可能有和分享是高度讚賞。

回答

1

MySQL的默認鎖定將確保沒有「半寫」行被提取。就「本地緩存」而言,在您的場景中,似乎所有這一切意味着將它們從數據庫中讀出到本地PHP數據結構(如數組)中。

1

你可以在這裏看到關於MySQL的鎖定:Locking in MySQL。在完成寫入數據後記住解鎖表。