2009-04-04 32 views
0

イメージアップロードスクリプトを作成していて、この問題が発生しました。 ImageMagickを使用すると、時間がなくなり画像がアップロードされるので、次の2行を挿入しました。完了したらPHPスクリプトは終了しません

set_time_limit(120); 
ini_set('max_input_time', 120); 

ただし、スクリプトは終了しません。アップロード、サイズ変更、およびデータベースの細かい挿入が行われても、ページは継続的に実行されます。これらは、何らかの形で互いに衝突しますか?それは時間制限として設定した120秒を過ぎ去ってしまいます。

編集: これはスクリプトの完全な画像編集部分です.1つか2つの画像で動作しますが、それ以上の時間を置くと長くなります。

set_time_limit(120); 
ini_set('max_input_time', 120); 
$resource = NewMagickWand(); 
MagickReadImage($resource,$image); 
MagickSetImageCompressionQuality($resource, 100); 
$resource = MagickTransformImage($resource,'0x0','660x500'); 
MagickWriteImage($resource, $image); 
DestroyMagickWand($resource); 

これは私がアップロードされるすべての画像を読み取るために使用したコードである:(reSizePicは上記のコード呼び出す関数である)

$numberImages = count($_FILES['galFile']['name'])-1; 

    for($i=1;$i<=$numberImages;$i++) 
    { 
    $imageName = $_FILES['galFile']['name'][$i]; 
       $imageType = $_FILES['galFile']['type'][$i]; 
       $imageSize = $_FILES['galFile']['size'][$i]; 
       $imageTemp = $_FILES['galFile']['tmp_name'][$i]; 
       $imageError = $_FILES['galFile']['error'][$i]; 

       //Make sure it is an image 
       if(in_array(end(explode(".", $imageName)), $allowed)) 
       { 
        //Where to upload image to 
        $uploadFile = $uploadDir . $imageName; 
        if (file_exists($uploadFile)) 
      { 
       //What to do if file already exists 
       //Append random number to the end 
       $front = explode(".", $imageName); 
       $randomNum = rand(1,100); 
       $front[0] = $front[0].$randomNum; 
       $imageName = $front[0].".".$front[1]; 
       $uploadFile = $uploadDir . $imageName; 
      } 
         if(move_uploaded_file($imageTemp,$uploadFile)) 
         { 
         //Add $imageName to DB 
         $query = "INSERT INTO galleryImages VALUES(\"0\",\"$lastInsert\",\"$imageName\",\"$i\")"; 
        mysql_query($query); 
        reSizePic($uploadFile); 
         } 
       } 



レヴィ

+0

スクリプトで使用しているPHPコードを表示できますか? – Aziz

+0

イメージ機能の残りの部分に追加しました。 – Levi

+0

try set_time_limit(0); ? – Aziz

答えて

2

set_time_limit()は一度だけ呼び出すようにしてください。呼び出すたびにタイマーがリセットされるためです。

たとえば、スクリプトにset_time_limit(30)を10秒間呼び出すと、スクリプトは合計40秒間実行されます。だから、resizePic()呼び出しごとに設定するのは悪い考えです。

+0

ループから取り除くと、15のうち10枚の画像がアップロードされた後、内部サーバーエラーが発生します。 – Levi

+0

スクリプトの先頭に貼り付け、タイムアウトを0(無限)に設定します。 – Aziz

+0

私が前にしなかったことに気づいたのは、写真の一部だけがサイズ変更されていたということでした。それらはアップロードされてからサイズが変更されるので、サイズを変更してアップロードする方法を理解する必要があります。私はサーバーには私が上書きすることはできません時間制限があると思います。 – Levi

関連する問題