Как вы отслеживаете файлы в SMB с приложением? - PullRequest
2 голосов
/ 13 июня 2009

Я создал приложение с PHP, которое показывает все файлы в домашнем каталоге пользователя, этот каталог также доступен через samba, так что вы можете получить к нему доступ из нативного проводника в Windows, Mac и Linux. Я хотел дать каждому файлу ID, чтобы я мог присваивать теги каждому файлу, как бы вы поступили так? Сделаете ли вы хэши файла и посмотрите, является ли он тем же хэшем, и, таким образом, сделаете вывод, что это тот же файл?

Могу ли я запускать samba для отправки чего-либо при каждом перемещении файла или папки?

Ответы [ 2 ]

0 голосов
/ 20 июня 2009

Чтобы ответить на ваш первый вопрос, конечно, сработает хэш. Было бы достаточно просто использовать md5 для файлов. Шансы на коллизию при хешировании файлов в вашем домашнем каталоге очень малы. ИМО я бы сказал даже не стоит упоминать. И, вероятно, само собой разумеется, но ... я бы хранил как минимум хеш и полный путь, чтобы вы могли иметь дело с перемещенными файлами надлежащим образом, и на самом деле делает что-то с файлом .

0 голосов
/ 15 июня 2009

Если ваша платформа Linux и установка установлена ​​довольно недавно, вы можете использовать inotify для вызова вашего PHP-кода при внесении изменений в файловую систему. Смотрите эту часть руководства по PHP:

http://us3.php.net/manual/en/book.inotify.php

Основное использование - добавить наблюдателя в каталог или каталоги Samba с обратным вызовом вашего кода PHP. Из соображений производительности было бы неплохо проверить, можно ли сказать, что inotify можно отправлять только интересующим вас типам обновлений в ваш код.

Обратите внимание, что inotify будет отбрасывать обновления / сообщения через определенный период времени. Так что у вас будут проблемы с синхронизацией вещей в какой-то момент времени. Одним из решений будет использование inotify на постоянной основе, а также периодическое полное сканирование каждого дома, чтобы убедиться, что оно отражает вашу базу данных (или где хранятся теги).

...