我正在尝试删除文件夹中的文件(图片文件),只要它们不存在于特定的数据库表中。
就像检查文件名一样,如果它们出现在表格中就可以了,但如果没有删除它们。
任何想法如何做到这一点?
答案 0 :(得分:3)
只需选择不应从数据库中删除的所有图片,然后浏览所有文件。
$result = mysql_query("SELECT filename FROM no_delete");
while($row = mysql_fetch_assoc($result)) {
$do_not_delete[] = $row['filename'];
}
foreach(glob("*") as $filename) {
if (!in_array($filename, $do_not_delete)) {
//delete them
}
}
答案 1 :(得分:0)
我会通过编写一个脚本来处理这个问题,该脚本列出了目录中的所有文件,将它们存储在一个数组中(因为你使用的是php)然后逐个查询你的数据库以查看它们是否存在于表
如果他们这样做,那么什么也不做,如果不这样做则删除它。
在日志文件中捕获您为历史记录删除的名称也很有帮助。
您可以使用curl在命令行运行此命令,甚至将其设置为chron作业(如果您使用的是Linux)或计划任务(在Windows上),以便它自动运行。
答案 2 :(得分:0)
使用scandir()http://php.net/manual/en/function.scandir.php获取文件夹的内容,并为每个数组值检查表中是否存在文件名。如果没有,请使用unlink()http://www.php.net/manual/en/function.unlink.php
删除该文件