2
if(isset($_POST['add_magazine']))
{
    $magazine_images=array();
    $magazine_images=implode(",",$_FILES['images']['name']);

    $path="images/magazines/";
    $mag_img=array();
    $mag_img=explode(",",$magazine_images);
    $img_count=count($mag_img);

    move_uploaded_file($_FILES['cover']['tmp_name'],$path . $_FILES['cover']['name']);
    for($i=0;$i<$img_count;$i++)
    {
        move_uploaded_file($_FILES['images']['tmp_name'][$i],$path . $mag_img[$i]);
    }
}

HTMLコード:

<tr>
    <th valign="top">Magazine Images</th>
    <td>:</td>
    <td><input type="file" name="images[]" value="" multiple></td>
</tr>

一度に40または50を超えるファイルをアップロードするためのphpフォームを作成しました。このフォームをローカルサーバーで実行すると、データベース内のすべてのファイルがアップロードされますが、このフォームをライブサーバーで実行すると、ファイルのアップロードに時間がかかりすぎて、19個または20個のファイルがアップロードされます。

なぜこれが起こるのですか、そしてこれに対する解決策は何ですか?これはサーバーのタイムアウトによるものですか?

4

4 に答える 4

4

max_execution_time = 30希望の値に変更してサーバーを再起動する必要があります。

ちなみに、ファイルをデータベースに保存することはお勧めできません(質問で述べたように)。それらをファイルシステムおよびアップロードされたファイルへのデータベースストアリンクに保存します。

注:アップロードプロセスにも影響を与える可能性のあるもの:

  1. max_input_time = 60
  2. post_max_size = 8M
  3. upload_max_filesize = 128M

php.iniにアクセスできない場合は、次を使用してphpスクリプトから直接設定できます。ini_set

ini_set('max_execution_time', $desiredValueInSeconds);
于 2012-10-20T11:03:27.443 に答える
4

サーバー構成を制御できない場合は、javascriptを使用してファイルをアップロードし、ファイルのアップロードがタイムアウトしないようにすることができます。ボーナスとして、素敵なプログレスバーを作成できます。

于 2012-10-20T11:06:36.023 に答える
1

max_input_timeサイズに関係なく、投稿データを待機する時間を定義する多くのWebサーバー用の設定(Apache上)があります。この時間がなくなると、PHPに触れることなく接続が閉じられます。

したがって、問題は必ずしもphpだけで解決できるわけではありませんが、サーバー設定を変更する必要があります。

あなたはこれを試すことができます:

これをhtaccessファイルに追加します。

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

これらの設定の詳細については、http://www.pacecode.com/blog/2008/09/22/magic-with-htaccess-file-increase-execution-time-session-expiry-time-and-file-upload-をご覧ください。サイズ制限/

于 2012-10-21T07:53:12.657 に答える
1

次のような致命的なエラーが発生していると仮定しますMaximum execution time of [amount of] seconds exceeded

php.iniファイル内に設定がありますmax_execution_time。この設定は、ライブ サーバーでは短い可能性が高いです (正当な理由により)。

ライブ サーバーでこの値を修正できない場合は、set_time_limitオプションを使用して実行時にこの設定の値を変更することができます。この方法で秒数を増やすと、スクリプトを実行するだけになります。

http://php.net/manual/en/function.set-time-limit.php

于 2012-10-20T11:07:07.130 に答える