Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сверить список файлов с записями в БД
 
 автор: Yuriev   (21.05.2005 в 13:53)   письмо автору
 
 

Здраствуйте! Подскажите пожалуйста.
Есть файлы в папке. Есть в БД ссылки на эти файлы.
Как найти имена файлов, на которые нет ссылок в БД и ссылки на несуществующие файлы?
Может есть функция сравнения массивов, в которые предварительно положить список файлов из папки и из БД?
Спасибо!

   
 
 автор: Loki   (21.05.2005 в 17:32)   письмо автору
 
   для: Yuriev   (21.05.2005 в 13:53)
 

Сделать выборку из бд в массив, а затем в цикле проверять существование файла с таким именем. Если файла нет - заносим его название в массив несуществующих файлов. Затем можно содержимое этого массива подставлять в запрос на удаление записей из БД.

   
 
 автор: Yuriev   (22.05.2005 в 02:09)   письмо автору
 
   для: Loki   (21.05.2005 в 17:32)
 

Спасибо. Но дело в том, что заранее не известно сколько файлов будет. Если предположить 80 файлов на диске и 80 записей о них в базе, то 80*80=6400 проверок, а это долго. Может есть что-то проще?

   
 
 автор: Loki   (22.05.2005 в 14:30)   письмо автору
 
   для: Yuriev   (22.05.2005 в 02:09)
 

Странная у вас математика: у меня получается если 80 записей в базе, то будет 80 проверок.

   
 
 автор: Yuriev   (22.05.2005 в 20:36)   письмо автору
 
   для: Loki   (22.05.2005 в 14:30)
 

Заранее не известно какой список правильный. Т. е., файлы какие-то есть, а записей про них в базе нет или записи в базе есть, а файлы некоторые отсутствуют.

   
 
 автор: glsv (Дизайнер)   (22.05.2005 в 23:07)   письмо автору
 
   для: Yuriev   (22.05.2005 в 20:36)
 

Но все равно не 80*80=6400
Проверяем ссылки из базы. 80 записей в базе – 80 проверок функцией file_exists()

логическое file_exists ( строка имя_файла)

Далее ищем файлы, на которых нет ссылок из базы. Пробегаем по списку файлов в директории (80) и выполняем 80 запросов к базе на проверку есть такой файл или нет.
80 запросов тоже много, но это не 6400 и это можно уже оптимизировать. Например, сохранить имена ссылок из базы в массив и поиск проводить уже не в базе, а в массиве.
И можно уже найденные файлы из этого массива вычеркивать, так что реально проверок будет значительно меньше.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования