我正在寻找方法来实现文件系统操作使用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. 如何在操作系统多任务执行?
- 3. 如何使用ubuntu操作系统在PHP中发送邮件?
- 4. 操作系统如何为文件执行缓冲
- 5. 如何在Cassandra中使用多个操作执行事务
- 6. 如何将可执行文件作为系统服务运行?
- 7. 如何在PHP中执行基于事件的操作
- 8. 操作系统如何在虚拟内存中执行二进制文件?
- 9. 数据执行保护:在x86操作系统中使用OptIn
- 10. 如何在S60操作系统中运行.jar文件?
- 11. 如何在DC操作系统中强制执行docker镜像?
- 12. 在Windows操作系统中的pathos软件包操作系统
- 13. 如何在窗口操作系统中使用安装在linux操作系统上的PHP接口?
- 14. 操作系统如何控制文件?
- 15. 如何在Windows操作系统上使用C#搜索文件
- 16. localhost在更新到Maverick/Yosemite操作系统后不会执行php文件
- 17. 如何在文件操作中使用事务?
- 18. 如何在宿主操作系统shell中使用vagrant执行`bundle exec command`
- 19. 在操作系统中搜索文件
- 20. 如何在我的操作系统上使用PHP
- 21. 如何在drupal中执行php操作
- 22. 操作文件系统
- 23. FUSE文件系统操作
- 24. 如何为不同的操作系统设置可执行文件的目录?
- 25. 在PHP中使用Memcached与自制软件 - 操作系统X
- 26. 通过操作系统执行程序
- 27. 从windows操作系统执行unix shell脚本文件
- 28. (多操作系统)获取可执行文件路径
- 29. 如何在64b操作系统上执行Xperf callstack捕获?
- 30. 如何在64位操作系统上执行汇编程序?
也许使用单例设计模式来创建一个对象的实例,该实例创建一个已处理和完成的事件列表以及一个算法,该算法将是每个事件的反转(例如,切换FROM位置)。如果由于任何原因而失败,则执行会颠倒所有更改的实例。 – MaxSan 2013-02-27 12:31:15