Удалите файлы, которых нет в MySQL TABLE - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь удалить файлы (файлы изображений) в папке, только если они отсутствуют в определенной таблице базы данных.

Так же, как проверка имен файлов и если они присутствуют вТаблица это нормально, но если не удалить их.

Есть идеи, как это сделать?

Ответы [ 3 ]

3 голосов
/ 15 января 2012

Просто выберите все изображения, которые не следует удалять из базы данных, и просмотрите все файлы.

$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
    }
}
0 голосов
/ 15 января 2012

Используйте scandir () http://php.net/manual/en/function.scandir.php, чтобы получить содержимое папки и для каждого значения массива проверить, присутствует ли имя файла в таблице.Если нет, удалите файл с помощью unlink () http://www.php.net/manual/en/function.unlink.php

0 голосов
/ 15 января 2012

Я бы подошел к этому, написав скрипт, который берет список всех файлов в каталоге, сохраняет их в массиве (так как вы используете php), а затем один за другим запрашивает вашу базу данных, чтобы увидеть, существуют ли они в стол.

Если они это сделают, то ничего не сделайте, если они этого не сделают, то удалите.

Также было бы полезно записать в файл журнала имена тех, которые вы удалили только для истории.

Вы можете запустить это из командной строки, используя curl, и даже настроить его как задание chron (если вы используете Linux) или как запланированное задание (в Windows), чтобы оно запускалось автоматически.

...