我正在研究用PHP和Mysqli編寫的複雜數據庫應用程序。對於大型數據庫操作,我使用在後臺工作的守護進程(也是PHP)。在這些可能需要幾分鐘的操作中,我想阻止用戶訪問受影響的數據,並向他們顯示消息。PHP/MySQL:暫時插入行
我想過創建一個Mysql表並在每次發生特定的守護進程時插入一行。然後,我總是能夠檢查某個操作是否在嘗試訪問數據時發生。
但是,如果守護進程因任何原因終止(從控制檯終止,丟失數據庫連接,拔出插件等),記錄不會留在數據庫中是很重要的。我不認爲Mysql事務/回滾能夠做到這一點,因爲提交是必要的,以便公佈更改並且記錄將在數據庫中保留,如果終止。
有沒有辦法確保記錄被刪除,如果進程終止?
所有守護進程都託管在一臺服務器上嗎? – arik
是的,現在所有東西都託管在一臺服務器上。但是當應用程序公開時,我會將數據庫移動到一個單獨的服務器上。 – 1nsane
好吧,如果所有守護進程都在一臺服務器上,無論數據庫的服務器如何,您都可以簡單地更新文件並寫入更新時間。檢查文件中保存的時間戳是否小於10秒,如果是,則不允許執行任何操作。這樣,您應該在守護進程運行時更新該文件,即使它以非正統方式終止,也不會影響後續處理。 – arik