2009-04-04 2 views
0

이미지 업로드 스크립트를 작성 중이며이 문제가 발생했습니다. ImageMagick을 사용하면 다음과 같은 두 줄을 삽입하여 이미지의 크기를 조정하고 업로드 할 시간이 부족하게됩니다.완료시 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

시도 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