최대 10MB의 파일에 대해 단일 이미지 업로드/자르기/크기 조정 스크립트를 사용하고 있습니다.PHP 메모리 제한 25MB 소모 - 파일 업로드/자르기/크기 조정
테스트 할 때 php_ini 메모리 제한을 25M로 설정했는데 약 1.4MB의 파일 만 업로드 할 때이 용량이 모두 소모되었습니다.
"Allowed memory size of 26214400 bytes exhausted (tried to allocate 10368 bytes)"
이것은 이상한 것 같습니다. 10368 < 26214400? (수사학상의 질문)
나는 2568MB 이상에 10368 바이트를 가져 갔는가? 스크립트에서이 많은 메모리를 사용해야합니까?
코드 :
function make_thumbnails($updir, $img)
{
$thumbnail_width = 200;
$thumbnail_height = 150;
$thumb_preword = "thumb_";
$arr_image_details = GetImageSize($updir.$img);
$original_width = $arr_image_details[0];
$original_height = $arr_image_details[1];
if($original_width > $original_height){
$new_width = $thumbnail_width;
$new_height = intval($original_height*$new_width/$original_width);
} else {
$new_height = $thumbnail_height;
$new_width = intval($original_width*$new_height/$original_height);
}
$dest_x = intval(($thumbnail_width - $new_width)/2);
$dest_y = intval(($thumbnail_height - $new_height)/2);
if($arr_image_details[2]==1) { $imgt = "ImageGIF"; $imgcreatefrom = "ImageCreateFromGIF"; }
if($arr_image_details[2]==2) { $imgt = "ImageJPEG"; $imgcreatefrom = "ImageCreateFromJPEG"; }
if($arr_image_details[2]==3) { $imgt = "ImagePNG"; $imgcreatefrom = "ImageCreateFromPNG"; }
if($imgt)
{
$old_image = $imgcreatefrom($updir.$img);
$new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imageCopyResized($new_image,$old_image,$dest_x,
$dest_y,0,0,$new_width,$new_height,$original_width,$original_height);
$imgt($new_image,$updir.$thumb_preword.$img);
// Added by your suggestions:
imagedestroy($old_image);
imagedestroy($new_image);
}
}
다른 10368 바이트를 할당하는 동안 방금 메모리 제한에 도달했습니다. 우리가 당신을 도울 수 있도록 몇 가지 코드를 보여주십시오. – Gumbo
귀하의 의견을 보내 주셔서 감사합니다. 코드는 –
으로 게시됩니다. 최선의 답변을 결정하기가 정말 어렵습니다. 감사!! –