0

我正在处理图像上传脚本并遇到了这个问题。使用 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);
                      }
                }



列维

4

1 回答 1

2

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

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

于 2009-04-05T02:03:45.503 回答