2

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

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

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

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

提前致谢!布赖恩

4

1 回答 1

4

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

我通常对这个问题采取的方法涉及额外的目录层次结构。一种典型的方法是获取您当前存储在单个目录中的文件名,并将其分解为对应于嵌套目录的部分。所以,如果你有一堆文件,比如

xyzzy
foo
bar
blah

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

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

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

您可能会收到有关使用没有 32k 文件限制的文件系统的建议。就个人而言,即使使用这样的文件系统,我也会始终使用我在这里提出的方案。在文件非常多的目录中使用命令行工具几乎是不可能的(甚至ls变得非常笨拙),并且在开发、调试过程中总是需要这种手动探索,并且在正常操作过程中经常需要时常进行.

于 2009-08-28T06:20:18.553 回答