在PHP中同时删除文件和路径,否则将回滚

在PHP中同时删除文件和路径,否则将回滚,php,Php,在我的脚本中,我首先删除数据库中的文件路径。如果删除路径已完成。我正在删除文件 我意识到我的ftp面板有问题。有些文件是孤立的。数据库中没有路径,但我有文件 您知道,我们可以使用try-catch块进行提交和回滚数据库查询。是否有任何处理文件的技术。例如,我们将删除路径并开始删除文件。如果删除文件时存在问题。我们必须回滚文件和路径。您可以创建一个备份策略,声明在删除之前必须备份所有文件,一旦成功,您可以决定如何处理备份文件 另一种解决方案是将所有已删除的文件移动到临时删除文件夹中,一旦成功删除所

在我的脚本中,我首先删除数据库中的文件路径。如果删除路径已完成。我正在删除文件

我意识到我的ftp面板有问题。有些文件是孤立的。数据库中没有路径,但我有文件


您知道,我们可以使用try-catch块进行提交和回滚数据库查询。是否有任何处理文件的技术。例如,我们将删除路径并开始删除文件。如果删除文件时存在问题。我们必须回滚文件和路径。

您可以创建一个备份策略,声明在删除之前必须备份所有文件,一旦成功,您可以决定如何处理备份文件


另一种解决方案是将所有已删除的文件移动到临时删除文件夹中,一旦成功删除所有文件,删除删除文件夹,这样您就可以调用文件了。看起来您需要类似于删除队列的东西—在单独进程中运行并等待命令的守护进程

当您决定删除数据时,首先在队列表中添加路径,若路径添加成功,则删除记录,否则回滚事务。这保证了所有补丁都出现在删除日志中

守护进程侦听带有路径的表并逐个删除文件。有一种算法它不是单一正确的算法,您可以选择不同的逻辑:

启动事务 从表中删除单个路径 删除文件 提交事务
如果第3步失败,您可以稍后重新尝试操作,可能是网络连接问题,或者向管理员报告失败文件为只读或不存在。

我认为可以使用外部工具或文件系统执行此操作

可以使用具有回滚功能的特殊文件系统—zfs、btrfs、

版本控制系统可用于回滚到以前提交的状态


从PHP执行此操作可能需要一些额外的工作锁,调用仅对root用户可用的可执行文件等。

请显示代码。代码并不重要。我们在谈论技术。如果有技术的话,我可以做到。我要求提交和回滚是可能的。您是否使用版本控制?如果它是在基于unix的系统或windows或其他操作系统中,因为不同的操作系统有不同的文件系统和垃圾处理。如果您显示代码,回答这个问题可能会有所帮助,因为您使用的是php函数,或者在phpThe中使用类似“rm-f filename”的shell执行备份过程涉及将文件一起移动到另一个文件夹,这与一起删除文件有相同的问题。。如果某个文件失败,仍要回滚。。怎么做