PHP-скрипт не завершится после завершения - PullRequest
0 голосов
/ 05 апреля 2009

Я работаю над сценарием загрузки изображений и столкнулся с этой проблемой. При использовании ImageMagick у меня не хватало бы времени для изменения размера и загрузки изображений, поэтому я вставил две строки:

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

Теперь, однако, скрипт никогда не заканчивается. Он постоянно запускает страницу, даже если он загружает, изменяет размер и вставляет в базу данных в порядке. Они как-то противоречат друг другу? Это даже проходит через 120 секунд, которые я установил в качестве ограничения по времени.

Edit: Это полная часть сценария, предназначенная для редактирования изображений, она работает, скажем, с 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);
                      }
                }



Леви

1 Ответ

2 голосов
/ 05 апреля 2009

Вы должны обязательно вызывать set_time_limit () только один раз, так как каждый раз, когда вы вызываете его, таймер сбрасывается.

Например, если вы вызовете set_time_limit (30) через 10 секунд для вашего скрипта, ваш скрипт будет работать в общей сложности 40 секунд. Поэтому установка его при каждом вызове resizePic () - плохая идея.

...