ユーザーが画像をアップロードできるように、PHP で AgileUploader を使用しています。私のスクリプトは、フォルダーが存在するかどうかを確認し、存在しない場合は、ユーザーのセッション ID に基づいてフォルダーを作成します。そこから、ユーザーはこのファイルを 3 つの異なるサイズに複製する単一のファイルをアップロードできます。
すべてが 99.8% の時間は問題なく動作しますが、今では 2 回 (数千のうち)、ルート イメージ フォルダーを複製するアップロード フォルダーがありました。私のフォルダ構造は次のとおりです。
temp/images/sessionid/large
temp/images/sessionid/medium
temp/images/sessionid/thumbnails
この問題により、次のことが発生することがあります。
temp/images/sessionid/sessionid/sessionid/ALL OTHER FOLDERS IN temp/images/
セッションの問題かもしれないと思いましたが、フォルダは有効なセッション ID で作成されています。
3 つの Web サーバーをすべて相互に同期して実行していますが、レプリケーションの問題により、有効なイメージの同期に遅延が発生しています。これは、ルートの一時/イメージ内のすべてのフォルダーとファイルが複製されるためです。
次に、リサイザーがパスをドロップすることに問題があるのではないかと考えました。
$listing_image = glob($temp_main_folder . "/large/*.{jpg,gif,png}", GLOB_BRACE);
if(count($listing_image) < 7){
if(move_uploaded_file($tmp_name, "$temp_main_folder/large/$name")){
$resizeObj = new resize("$temp_main_folder/large/$name");
$resizeObj -> resizeImage(350, 350, 'auto');
$resizeObj -> saveImage("$temp_main_folder/medium/$name", 90);
$resizeObj -> resizeImage(120, 120, 'auto');
$resizeObj -> saveImage("$temp_main_folder/thumbnails/$name", 90);
}
}
とにかく、私が言ったように、それは 99.8% 動作するので、どのコードにも問題があるとは思いません...しかし、再び、2 回失敗しました。
私の質問は、mkdir を使用するとき、またはサブフォルダーとファイルの数を制限するときに、PHP がフォルダーのサイズを制限する方法はありますか? または、ファイルのアップロードに関するその他の検証手法に関する提案。
各フォルダーには常に 3 つのサブフォルダーがあり、各サブフォルダーには最大 6 つのファイルがあり、各ファイルのサイズは最大 1 MB です。