3

我听说在 Linux 中,您应该将目录保持在一个文件夹中的 32000 个文件以下。这就是为什么我要创建一个上传目录,它是这样构建的:

$x = rand(0,32000);
$z = rand(0,32000);
$y = rand(0,32000);
$f = rand(0,32000);

root/uploaddir/$x/$y/$z/$f/{user_id}/

我的问题是,我还想检查它是否已经存在以及是否确实要检查目录中是否已经存在 32000。

但是当我有 30000^4 个目录时,我不知道应该如何处理它,所以它不会变得太慢。

那么当参数为: - 文件夹和父文件夹不能有更多的 32.000 个文件/目录时,我应该如何检查并找到文件应该放在哪个目录中

希望可以理解。

此致,

登劳。

4

2 回答 2

3

不要使用随机数,而是使用用户 ID 中的连续字符:

/root/uploaddir/j/o/n/e/jones/
/root/uploaddir/s/m/i/t/smith
/root/uploaddir/f/r/e/d/freddie
etc.

然后,每个目录中的条目将永远不会超过 200 个。

于 2013-11-03T19:14:16.070 回答
0

检查文件或目录是否存在:

if( file_exists($path) ) {
    // do something here
}

PHP:file_exists - 手册

获取目录中的文件数:

exec("ls $path | wc -l", $number_of_files);

PHP: 执行 - 手册

于 2013-11-03T19:14:33.303 回答