【发布时间】:2009-06-13 14:17:43
【问题描述】:
我用 PHP 构建了一个应用程序,它显示了用户主目录中的所有文件,该目录也可以通过 samba 访问,因此您可以从 windows、mac 和 linux 中的本机资源管理器访问它。我想给每个文件一个 ID,这样我就可以为每个文件分配标签,你会怎么做?您是否会对文件进行哈希处理并查看它是否是相同的文件哈希并因此得出结论它是相同的文件?
我可以在每次移动文件或文件夹时触发 samba 发送内容吗?
【问题讨论】:
我用 PHP 构建了一个应用程序,它显示了用户主目录中的所有文件,该目录也可以通过 samba 访问,因此您可以从 windows、mac 和 linux 中的本机资源管理器访问它。我想给每个文件一个 ID,这样我就可以为每个文件分配标签,你会怎么做?您是否会对文件进行哈希处理并查看它是否是相同的文件哈希并因此得出结论它是相同的文件?
我可以在每次移动文件或文件夹时触发 samba 发送内容吗?
【问题讨论】:
如果您的平台是 Linux 并且安装时间较新,您可以使用 inotify 在文件系统发生更改时调用您的 PHP 代码。请参阅 PHP 手册的这一部分:
http://us3.php.net/manual/en/book.inotify.php
基本用法是在一个或多个 Samba 目录上添加一个观察器,并回调您的 PHP 代码。出于性能原因,最好看看是否可以告诉 inotify 只将您感兴趣的更新类型发送到您的代码。
但请注意,inotify 会在一段时间后删除更新/消息。因此,您将在某个时间点保持同步时遇到问题。一种解决方案是持续使用 inotify,并定期对每个家庭进行全面扫描,以验证它是否反映了您的数据库(或存储标签的任何位置)。
【讨论】:
要回答您的第一个问题,制作哈希当然可以。只需在文件上使用 md5 就足够了。散列主目录中的文件时发生冲突的可能性非常小。 IMO 我什至会说不值得一提。 这可能不言而喻,但是...我会至少存储散列和完整路径,这样你就可以适当地处理移动的文件,并且实际上做一些事情文件。
【讨论】: