Обновление:
Я написал рабочий сценарий, который завершает эту работу в течение разумного периода времени и выглядит достаточно надежным. Он полностью написан на PHP и основан на идее array_diff (), предложенной сахарином (так что, спасибо сахарину!).
У меня есть база данных MySQL, которая является индексом mp3-файлов в определенном каталоге вместе с их атрибутами (т. Е. Title / artist / album).
Новые файлы часто добавляются в каталог музыки. На данный момент он содержит около 25 000 файлов MP3, но мне нужно создать задание cron, которое просматривает его каждый день или около того, добавляя любые файлы, которые он не находит в базе данных.
Проблема в том, что я не знаю, как лучше / наименее обременительный способ сделать это. Я предполагаю, что запрос MySQL должен был бы выполняться для каждого файла в каждом запуске cron (чтобы проверить, уже ли он проиндексирован), поэтому сценарий неизбежно займет некоторое время, чтобы запустить (что нормально; это автоматизированный процесс). Однако из-за этого моего обычного языка выбора (PHP), вероятно, будет недостаточно, поскольку он не предназначен для запуска таких долгосрочных сценариев (или это ...?).
Очевидно, что это было бы неплохо, но меня не смущает удаление записей индекса для удаленных файлов (если файлы на самом деле удаляются, это всегда ручная очистка, и я не против просто зайти в базу данных вручную, чтобы исправить индекс).
Кстати, это было бы рекурсивно; файлы в основном расположены в структуре Artist / Album / Title.mp3, однако они не упорядочены подобным образом, и скрипт наверняка должен будет иметь возможность извлекать теги ID3 для новых файлов. Фактически, в идеале, я бы хотел, чтобы скрипт извлекал теги ID3 для каждого файла при каждом запуске, и либо добавлял новую строку в базу данных, либо обновлял существующую, если она изменилась.
Во всяком случае, я начинаю с нуля с этого, поэтому сначала думаю, что это самый основной совет (например, какой язык программирования использовать - я готов выучить новый, если необходимо). Большое спасибо!