как синхронизировать таблицу базы данных и каталог с php

0

У меня есть каталог с файлами и таблицей базы данных, в которых должны быть одинаковые файлы. Я хотел бы иметь возможность синхронизировать таблицу базы данных с каталогом. Какой был бы самый эффективный способ сделать это? или я бы реалистично мог сделать это только грубостью?

Здесь мой подход:
1. получить все файлы в каталоге как массив
2. получить все имена файлов в таблице базы данных в виде массива
3. Зациклируйте значения файла в массиве каталогов и используйте in_array() в массиве таблицы базы данных, чтобы проверить имя файла в этом массиве, а если нет, тогда начните строить массив, чтобы вставить недостающие имена файлов. запустить db-запрос, чтобы добавить каждую строку отсутствующих файлов в таблицу базы данных
4. Зациклируйте массив каталогов и используйте in_array() в массиве каталогов, и все, что не найдено в массиве каталогов, будет просто удалено из таблицы.

Есть ли лучший способ сделать это? или что-то лучше для этого в php, чем in_array()?

  • 0
    Больше похоже на одностороннее обновление, чем на синхронизацию. Нужно ли сохранять существующие записи в базе данных при обновлении, или это нормально, если первичные ключи и тому подобное воссоздаются?
  • 0
    мне нужно поддерживать первичные ключи. вы правы с односторонним обновлением, меня действительно беспокоит только то, что первичный ключ и имя файла для него никогда не будут указывать на файл, который не существует в каталоге. но может случиться так, что файл будет добавлен в каталог (вручную) и захочет назначить ему ключ, на который можно ссылаться на сайте.
Теги:
arrays
performance

1 ответ

1
Лучший ответ

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

(Обратите внимание, однако, что вы можете работать с копиями массивов, а не с оригиналами.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню