0
後解釋到底發生了什麼:確保多個請求處理一個其他
外部服務發送帶有XML數據的HTTP POST請求的PHP腳本。這個腳本檢查數據是否已經存在於MySQL數據庫中。如果不是,則插入新記錄。
現在出現了第二個用於故障安全的服務。它將完全相同的XML數據發送到PHP腳本。
問題:
的腳本已經檢查,如果記錄存在。但是,這些請求幾乎在同一時間發生,並且腳本被並行調用。所以具有相同數據的兩個請求的數據都被插入。
我想過使用一個隊列,但我無法想象一個簡單的方法來做到這一點。整個過程其實很簡單。
確保不插入數據兩次的最簡單方法是什麼?
使用唯一鍵和INSERT ON插入語句的DUPLICATE KEY UPDATE形式。對於http請求,無法確保收到的訂單。 –
使用交易。 – Barmar
我不認爲交易會改變任何東西,但唯一的鑰匙會 - 我想。我會嘗試清理數據庫並添加UNIQUE鍵。 – Michael