3

Linux では、1 つのフォルダーに 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 のディレクトリができたとき、それをどのように処理すればよいかわからないため、遅くなりすぎません。

では、パラメータが次の場合に、ファイルを配置するディレクトリを確認して見つける方法は次のとおりです。

理解できることを願っています。

よろしくお願いします、

デンラウ。

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 に答える