我正在尋找方法來實現文件系統操作使用php與交易支持。就像我正在執行諸如移動,複製和刪除事務內部的操作一樣,如果其中一個操作失敗,腳本需要恢復所有已經執行的操作。我有點無知,正在尋求如何實現的指導。如果可用的庫或解決方案存在?如果問題聽起來含糊不清,我很抱歉。如何在使用php的事務中執行文件系統操作?
10
A
回答
2
文件系統 - 與數據庫管理系統不同 - 不支持事務處理。但是有些確實提供了實現交易所需的東西;那就是鎖定和記錄。日誌記錄不會是你的問題,因爲你也可以在php中完成,但是你需要一個提供文件鎖定的文件系統。
我建議你不要自己實現這樣的事情 - 你可能遇到很多問題。數據庫人員回顧了幾十年的研究歷史,在這裏。
但是,如果你必須,你可以(開始)在php中實現類似Two-phase locking的東西。另外,您可以考慮使用command pattern,這有助於撤消回滾功能。
3
一種選擇是考慮將文件存儲爲數據庫中的BLOB而不是文件。這些將支持事務以及數據庫的所有其他功能。
可以支持高級文件系統(如ZFS)上的事務,但不直接使用PHP,並且在Linux上默認情況下不安裝ZFS。
3
最常見的模式是將所有內容複製到其他地方,在副本上進行操作並在所有內容都正確的情況下替換原件。
東西告訴我,PHP流包裝也可以用於此。可以覆蓋'file://'協議並在虛擬文件系統中運行(概念驗證:https://github.com/Respect/Test#streamwrapper)。
相關問題
- 1. 如何在minix操作系統中執行c文件
- 2. 如何使用ubuntu操作系統在PHP中發送郵件?
- 3. 如何在操作系統多任務執行?
- 4. 操作系統如何爲文件執行緩衝
- 5. 如何在Cassandra中使用多個操作執行事務
- 6. 如何將可執行文件作爲系統服務運行?
- 7. 數據執行保護:在x86操作系統中使用OptIn
- 8. 如何在S60操作系統中運行.jar文件?
- 9. 如何在窗口操作系統中使用安裝在linux操作系統上的PHP接口?
- 10. 如何在Windows操作系統上使用C#搜索文件
- 11. 如何在宿主操作系統shell中使用vagrant執行`bundle exec command`
- 12. 在操作系統中搜索文件
- 13. 如何在我的操作系統上使用PHP
- 14. 如何在drupal中執行php操作
- 15. 如何爲不同的操作系統設置可執行文件的目錄?
- 16. 通過操作系統執行程序
- 17. 從windows操作系統執行unix shell腳本文件
- 18. 如何在64b操作系統上執行Xperf callstack捕獲?
- 19. 如何使用REST爲文件系統操作建模?
- 20. 從操作系統獲取事件
- 21. 如何在其他系統中運行可執行文件jar?
- 22. 在操作系統中執行命令的Java
- 23. 如何在Java中測試文件系統操作
- 24. 如何在Windows操作系統中訪問Undeletable目錄/文件?
- 25. Python:如何在操作系統中打開時寫入文件
- 26. 如何使用install4j查找系統可執行文件路徑?
- 27. 使用模塊從python執行操作系統命令
- 28. 確定系統(),pasthrus(),exec()操作在php中執行的時間長度
- 29. 如何在一個操作系統中安裝oracle並在其他操作系統(windows和linux)中使用
- 30. 如何在Ruby中使用多個操作系統的命令?
也許使用單例設計模式來創建一個對象的實例,該實例創建一個已處理和完成的事件列表以及一個算法,該算法將是每個事件的反轉(例如,切換FROM位置)。如果由於任何原因而失敗,則執行會顛倒所有更改的實例。 – MaxSan 2013-02-27 12:31:15