0

これは、複数の画像を選択するアップローダです。画像を選択して送信をクリックすると、リクエストに時間がかかります。処理を高速化する方法はありますか??

データベーステーブルと列について心配する必要はありません。テスト上の理由から、完全なデータベースを作成していませんが、最初にテストしたばかりです。

前もって感謝します。

   <?
session_start();
include('connect.php');
?>

<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]" multiple/>
<input type="submit"/>
</form>

<?

if(isset($_FILES['files'])){
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
    $file_name = $key.$_FILES['files']['name'][$key];
    $file_size =$_FILES['files']['size'][$key];
    $file_tmp =$_FILES['files']['tmp_name'][$key];
    $file_type=$_FILES['files']['type'][$key];  
    if($file_size > 2097152){
        $errors[]='File size must be less than 2 MB';
    }
$desired_dir="Uploads/";    
    $query="INSERT into Pictures (`id`,`Image1`,`Image2`,`Image3`) VALUES('','$desired_dir$file_name','$file_size','$file_type'); ";
    if(empty($errors)==true){
        if(is_dir($desired_dir)==false){
            mkdir("$desired_dir", 0700);        // Create directory if it does not exist
        }
        if(is_dir("$desired_dir/".$file_name)==false){
            move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
        }else{                                  // rename the file if another one exist
            $new_dir="$desired_dir/".$file_name.time();
             rename($file_tmp,$new_dir) ;               
        }
     mysql_query($query);           
    }else{
            print_r($errors);
    }
}
if(empty($error)){
    echo "Success";
}
}
?>
4

2 に答える 2

1

上記のコメントに基づいて、アップロードは正常に見えます。インターネット接続が低速で、ファイルのアップロード時に速度が低下します。

また、 MySQLiまたはPDOを調べることを強くお勧めします。現在のスクリプトは攻撃に対して無防備です

于 2013-01-30T23:43:05.883 に答える
0

私の知る限り、サーバーへのファイルのマルチスレッドアップロードはありません。また、アップロード速度は、サーバーのダウンロード速度ユーザーのアップロード速度(サーバーのダウンロード速度よりもはるかに遅い) によって制限されます。残念ながら、コードを変更してアップロードを高速化することはできません。

于 2015-09-29T06:27:05.207 に答える