我正在处理图片上传脚本并遇到了这个问题。使用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);
}
}
列维
答案 0 :(得分:2)
你应该确保只调用一次set_time_limit(),因为每次调用它时,计时器都会被重置。
例如,如果您在脚本中调用set_time_limit(30)10秒,则脚本将运行总共40秒。因此,在每个resizePic()调用上设置它是一个坏主意。