完成后PHP脚本不会结束

时间:2009-04-04 21:44:55

标签: php ini-set

我正在处理图片上传脚本并遇到了这个问题。使用ImageMagick我会没时间调整大小和上传图像,所以我插入了这两行:

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);
                      }
                }



列维

1 个答案:

答案 0 :(得分:2)

你应该确保只调用一次set_time_limit(),因为每次调用它时,计时器都会被重置。

例如,如果您在脚本中调用set_time_limit(30)10秒,则脚本将运行总共40秒。因此,在每个resizePic()调用上设置它是一个坏主意。