php - 如何在事务中执行 php 文件系统?

标签 php mysql sql transactions filesystems

如何执行带事务的php文件系统?

我知道这不能不问人们通常如何解决这个问题?
每次用户上传文件时,都会将数据库和存储文件(move_uploaded_file)插入正确的位置,需要创建一个包含上传文件的新文件夹。

当用户创建时
查询失败如何取消文件链接?

try {
  $connect_db->beginTransaction();
  // .. execute insert query
  // .. execute other query

  if (!is_dir($folder_path)) {
     if(mkdir($folder_path, 0755) == false) {
         // rollback query execute before
     }
  }

  // .. execute other query

  $connect_db->commit();
} catch (PDOException $e) {

}

当用户删除
查询失败如何恢复unlink文件?

try {
  $connect_db->beginTransaction();
  // .. execute delete query
  // .. execute other query

  if (!unlink($file_path)) {

  }

  // execute other query

  $connect_db->commit();
} catch (PDOException $e) {

}

最佳答案

你不能那样做。

通常 文件系统不提供任何事务功能,除非您使用的是某些提供的特殊文件系统。如果是这样 - 检查其文档。

If query fail, how to remove the file? (question)

使用 unlink()

How to recover unlink file, if query fail?

只是不要立即删除。安排删除任务并在需要时将其取消。

关于php - 如何在事务中执行 php 文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24298670/

相关文章:

php - 将字符串转换为 SHA1 和 base64

php - 如何安全地将 apiKey/客户端密码从 AngularJS 传递到 REST API

php - 使用 PHP 和验证码减少垃圾邮件的最佳实践是什么?

mysql - 在nodejs代码中向mysql存储过程传入​​和传出参数并返回out参数

mysql - 跨机器的 Docker 可移植部署 : where to start

sql - 让 SQL UPDATE 像 native IO 一样在记录锁上抛出错误消息

asp.net - SQL Server 连接到另一个 SQL Server?

java - 无法使用 php exec 执行 jar 文件,尽管它可以在终端中运行

MySQL SELECT AS 将两列合二为一

sql - 在 ORACLE 中,有没有一种方法可以使用两个表将多行行连接成一个行,其中最终值用逗号分隔?