php - 当我从数据库中删除一行时,我还想从文件夹中删除相应的文件
问题描述
问题是当我从表中删除一个文档时,它也需要删除该文件。在这种情况下,我使用文件夹大小键,以便客户端可以看到文件夹正在使用多少空间。但是当我删除该行时,文件仍然存在,这意味着文件夹大小变得不准确。这是删除行的类非常简单,但我需要在那里取消链接,以便文件也被删除。
这是有关如何读取文件以及文件所在位置的一些信息。所以现在每个客户都有自己的文件夹,当我在 readfile 下放置一个 unlink 时,它可以工作,所以读取文件然后从服务器中删除:
$pathinfo = pathinfo($document->bestand);
$ext = $pathinfo['extension'];
$file_name = HOSTING_DIR . DOCUMENT_SAVE_DIR . $_SESSION['clienturl'] . '/' . $document->document_id . '.' . $ext;
if(file_exists($file_name)) {
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/download");
header("Content-Disposition: inline; filename=" . $document->bestand);
header("Content-Transfer-Encoding: binary");
readfile(HOSTING_DIR . DOCUMENT_SAVE_DIR . $_SESSION['clienturl'] . '/' . $document->document_id . '.' . $ext);
班级
public function deleteDocument($document_id) {
$sql = 'DELETE FROM documenten WHERE document_id = :document_id';
$parameters = array(
':document_id' => $document_id,
);
$stmt = $this->db->prepare($sql);
if($stmt->execute($parameters)) {
return true;
} else {
return false;
}
}
所以期望很容易。我想删除该行并同时删除文件@the
解决方案
我想删除该行并同时删除文件@the
您不能同时删除数据库行和文件。如果您希望数据库和文件系统保持一致,您可以:
- 创建数据库事务
- 删除数据库行
- 删除文件
- 提交(如果文件被删除)或回滚(如果文件不能被删除)事务
推荐阅读
- linux - 使用内存映射IO时调用ioread函数有什么好处
- python - python pandas读取空格分隔的数据
- android - TypeError: null is not an object (evalating 'n.default.configureProps') React Native Jitsi Meet
- java - 如何在 Mockito 中模拟 CallableStatement
- python - 如何运行并行线程以在视频流的每一帧上应用函数?
- c - 在 for 循环之后的 Scanf 函数不起作用
- algorithm - 如何从代码中获取流程图或算法?
- c# - 当左 div 元素变长时,如何确保我的左 div 元素不会改变我的右 div 元素的位置?
- c++ - 显示所有匹配值的二进制搜索功能?
- python - 无法使用 bio pythons TreeConstruction 工具模块创建门树