|
|
|
| Здраствуйте! Подскажите пожалуйста.
Есть файлы в папке. Есть в БД ссылки на эти файлы.
Как найти имена файлов, на которые нет ссылок в БД и ссылки на несуществующие файлы?
Может есть функция сравнения массивов, в которые предварительно положить список файлов из папки и из БД?
Спасибо! | |
|
|
|
|
|
|
|
для: Yuriev
(21.05.2005 в 13:53)
| | Сделать выборку из бд в массив, а затем в цикле проверять существование файла с таким именем. Если файла нет - заносим его название в массив несуществующих файлов. Затем можно содержимое этого массива подставлять в запрос на удаление записей из БД. | |
|
|
|
|
|
|
|
для: Loki
(21.05.2005 в 17:32)
| | Спасибо. Но дело в том, что заранее не известно сколько файлов будет. Если предположить 80 файлов на диске и 80 записей о них в базе, то 80*80=6400 проверок, а это долго. Может есть что-то проще? | |
|
|
|
|
|
|
|
для: Yuriev
(22.05.2005 в 02:09)
| | Странная у вас математика: у меня получается если 80 записей в базе, то будет 80 проверок. | |
|
|
|
|
|
|
|
для: Loki
(22.05.2005 в 14:30)
| | Заранее не известно какой список правильный. Т. е., файлы какие-то есть, а записей про них в базе нет или записи в базе есть, а файлы некоторые отсутствуют. | |
|
|
|
|
|
|
|
для: Yuriev
(22.05.2005 в 20:36)
| | Но все равно не 80*80=6400
Проверяем ссылки из базы. 80 записей в базе – 80 проверок функцией file_exists()
логическое file_exists ( строка имя_файла)
|
Далее ищем файлы, на которых нет ссылок из базы. Пробегаем по списку файлов в директории (80) и выполняем 80 запросов к базе на проверку есть такой файл или нет.
80 запросов тоже много, но это не 6400 и это можно уже оптимизировать. Например, сохранить имена ссылок из базы в массив и поиск проводить уже не в базе, а в массиве.
И можно уже найденные файлы из этого массива вычеркивать, так что реально проверок будет значительно меньше. | |
|
|
|