处理大量用户文件

时间:2013-11-03 19:06:42

标签: php performance file-upload

我听说在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个文件/目录

希望这是可以理解的。

最诚挚的问候,

Denlau。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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

PHP: file_exists - Manual

获取目录中的文件数:

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

PHP: exec - Manual