2009-06-13 74 views
1

我已經用PHP構建了一個應用程序,它顯示了用戶的主目錄中的所有文件,該目錄也可以通過samba使用,因此您可以從Windows,Mac和Linux本機資源管理器訪問它。我想給每個文件一個ID,這樣我可以爲每個文件分配標籤,你會怎麼做呢?你會做這個文件的散列,看看它是否有相同的文件散列,並因此推斷出它是同一個文件?如何使用應用程序跟蹤SMB中的文件?

我可以在每次文件或文件夾被移動時觸發samba發送內容嗎?

回答

0

如果您的平臺是Linux並且安裝相當新,您可以使用inotify在進行文件修改時調用您的PHP代碼。見PHP手冊的這一部分:

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

的基本用法是對Samba的目錄或目錄添加一個觀察者有回調到你的PHP代碼。出於性能方面的原因,最好查看inotify是否只能告訴你感興趣的更新類型到你的代碼中。

但請注意,inotify會在一段時間後丟棄更新/消息。因此,在某個時間點保持同步狀態時,您會遇到問題。一種解決方案是持續使用inotify,並定期對每個家庭進行全面掃描,以驗證其是否反映了您的數據庫(或存儲標籤的位置)。

0

要回答你的第一個問題,做一個散列當然會起作用。只需在文件上使用md5就足夠了。散列主目錄中的文件時發生衝突的機率非常小。海事組織我甚至說不值得一提。 它可能不用說,但是...我會存儲至少的哈希和完整的路徑,所以你可以適當地處理移動的文件,而實際上做一些與文件。