检索非常大的目录的信息

时间:2009-08-28 06:07:51

标签: php linux subdirectory

我点击了Linux的32,000子目录限制。它导致我的PHP脚本出现问题,我不希望它再次发生。

简单的解决方案是让我的PHP脚本在尝试创建另一个子目录之前检查当前的子目录计数。

我看到所有执行此类检查的想法都涉及遍历整个目录并计算每个文件夹。考虑到我对非常大的目录的关注,是否有更好的方法来检索它包含的文件/文件夹的数量?

奖金问题:是否还有一种非迭代的方法来查找目录的磁盘使用情况?

提前致谢! 布赖恩

1 个答案:

答案 0 :(得分:4)

更好的方法是设计目录布局,这样就无法在一个目录中拥有32000个文件。事实上,我建议目录中的1000个文件太多了。

我通常采用的解决此问题的方法涉及额外级别的目录层次结构。一种典型的方法是将当前存储的文件名存储在一个目录中,并将其分解为与嵌套目录对应的部分。所以,如果你有一堆像

这样的文件
xyzzy
foo
bar
blah

你实际上可能将它们存储为

x/xyzzy
f/foo
b/bar
b/blah

等等。您可以将其扩展到多个目录级别,或使用多个字符来拆分子目录,以便权衡此方法的深度与广度。

您可能会收到使用没有32k文件限制的文件系统的建议。就个人而言,即使有这样的文件系统,我总是会使用像我在这里提议的方案。在具有非常大量文件的目录中有效地使用命令行工具几乎是不可能的(甚至ls变得完全笨重),并且在开发,调试期间以及通常从时间开始总是需要这种手动探索正常运行期间的时间。

相关问题