2009-06-13 1 views
1

Я создал приложение с PHP, которое показывает все файлы в домашнем каталоге пользователя, этот каталог также доступен через samba, чтобы вы могли получить доступ к нему из собственного проводника в windows, mac и linux. Я хотел дать каждому файлу идентификатор, чтобы я мог привязывать теги к каждому файлу, как бы вы это сделали? Не могли бы вы сделать хэш файла и посмотреть, будет ли он одинаковым filehash и таким образом заключить, что его тот же файл?Как вы отслеживаете файлы в SMB с помощью приложения?

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

ответ

0

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

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

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

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

0

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

Смежные вопросы