2009-06-13 4 views
1

J'ai construit une application avec PHP qui montre tous les fichiers dans le répertoire home d'un utilisateur ce répertoire est également disponible via samba afin que vous puissiez y accéder depuis l'explorateur natif sous windows, mac et linux. Je voulais donner un identifiant à chaque fichier afin que je puisse attribuer des étiquettes à chaque fichier. Comment procéderiez-vous? Feriez-vous des hashs du fichier et regardez si c'est le même fichierhash et concluriez donc que c'est le même fichier? Est-ce que je peux déclencher Samba pour envoyer quelque chose à chaque fois qu'un fichier ou un dossier est déplacé?Comment suivre les fichiers dans SMB avec une application?

Répondre

0

Si votre plate-forme est Linux et que l'installation est assez récente, vous pouvez utiliser inotify pour appeler votre code PHP lorsque des modifications de fichiers sont effectuées. Voir cette partie du manuel PHP:

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

L'utilisation de base serait d'ajouter un veilleur sur le répertoire Samba ou répertoires avec un rappel à votre code PHP. Pour des raisons de performances, ce serait une bonne idée de voir si inotify peut se contenter d'envoyer les types de mises à jour qui vous intéressent dans votre code.

Notez cependant qu'inotify supprimera les mises à jour/messages après un certain temps. Vous aurez donc du mal à synchroniser les choses à un moment donné. Une solution consisterait à utiliser inotify sur une base continue en effectuant périodiquement une analyse complète de chaque maison pour vérifier qu'elle reflète votre base de données (ou l'endroit où les étiquettes sont stockées).

0

Pour répondre à votre première question, il va de soi que faire un hash fonctionnerait bien. Il suffit d'utiliser md5 sur les fichiers. Les chances d'une collision lors du hachage des fichiers dans votre répertoire personnel sont incroyablement faibles. OMI je dirais même pas la peine de mentionner. Et il va probablement sans dire mais ... Je voudrais stocker au moins le hachage et le chemin complet, de sorte que vous pouvez traiter correctement les fichiers déplacés, et en fait faire quelque chose avec le fichier.

Questions connexes