PHP - хороший способ увидеть, если несколько файлов присутствуют в базе данных? - PullRequest
1 голос
/ 10 декабря 2010

У меня есть база данных, полная идентификаторов изображений, идентификаторы соответствуют именам файлов изображений, хранящихся на сервере.Я хотел бы проверить, все ли файлы в каталоге изображений присутствуют в базе данных, и если нет, вернуть массив только тех файлов , которые НЕ присутствуют в базе данных.

В настоящее время я использую scandir для получения массива файлов в каталоге, затем извлекаю все идентификаторы изображений из базы данных SQLite и с помощью array_diff возвращаю все файлы, которых еще нет в БД,

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

1 Ответ

2 голосов
/ 10 декабря 2010

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

Однако ваш текущийРешение отлично, так как операция с массивом выполняется в памяти и, следовательно, довольно дешево.

Что вы делаете НЕ хотите сделать так:

  1. Поиск файлов в файловой системе по отдельности
  2. Запрос каждого файла в базе данных по отдельности

Любая из этих операций довольно дорога.Практически любое другое решение будет работать, пока вы не получите 100 000 файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...