2011-12-20 39 views
0

我创建了一个基于php的在线文件系统,而不使用数据库。它运作良好,但有一点讨厌我:最后修改日期在PHP Web服务器上的文件夹

每当我编辑,移动,重命名文件夹中,只有直接父(文件夹)中获得的日期(最后一次编辑)的变化。早在树中的所有其他文件夹中保持自己的编辑日期...

有什么办法让这最后的编辑可能不编辑每个文件夹(这将意味着肯定的性能损失)。

我知道一个数据库解决方案会很好,但我们的文件系统的成功是简单的(现在不需要数据库)。

感谢您的提示!

+0

你在使用什么操作系统?你如何阅读文件夹的“最后编辑日期”? – liquorvicar 2011-12-20 17:59:40

+0

Linux(Debian)。上次编辑由filemtime()显示: – andreas 2011-12-27 00:23:51

回答

1

我猜测你的“在线” /虚拟文件系统中的文件和目录对应一到一个与底层(服务器)文件系统的文件和目录。

标准POSIX文件系统语义是添加文件时,目录的修改时间才会更新,删除或重命名目录。在目录中进行这样的更改不会导致任何父目录中的mtime更改。在目录内编辑文件也不会改变目录的mtime,只会改变文件本身的mtime。 (你没有提到你的问题是,在一个目录编辑文件确实导致父目录的修改时间进行更新,但我认为这很可能是因为你以一个新的副本,并重新命名它比原来编辑文件。)

如果你想父目录的修改时间改变,以及,你想记录在文件系统本身的信息,你这样做有通过手动触摸每个父目录做这一切的方式到根。这可能不会是一个很大的性能杀手:你可以使用touch函数,这应该相当于每个目录的系统调用或多或少只是一个单一的utime

-Phil

+0

好主意。我几周前也读过关于“触摸”的内容,但我还没有测试它。我会肯定地尝试这个。 – andreas 2011-12-28 18:56:34

相关问题