2012-05-24 2 views
0

큰 .jpg 이미지를 업로드 한 다음 변수를 통해 처리하고 있습니다. 한 곳에서 나는 가지고있다.PHP 변수는 언제 자동으로 삭제됩니까?

$ 이미지 = imagecreatefromjpeg ($ _ FILES [ 'smileimage'] [ 'tmp_name'])

그리고 나중에하는 if 경우에, 나는 $image = $newImage;과 몇 가지 작업을 수행 한 후이, 나는 변수들을 파괴하기를 원한다. 만약 내가 그들을 파괴하지 않는다면, 그들은 단지 RAM을 계속 먹을지도 모른다고 생각한다. 그래서 나는 다음과 같은 한 :

if(isset($newImage)) { 
    imagedestroy($newImage); 
} 
imagedestroy($image); 
imagedestroy($thumbnail); 

을하지만이

경고와 같은 오류 제공 : 그것은 알 수

(11)의 유효한 이미지 리소스 아니지만 ... : imagedestroy을() erros는 imagedestroy($image)입니다. 그러나 $image은 유효한 image 리소스입니다. 그것은 내가 $newImage을 파괴하면 $image도 자동으로 파괴된다는 것입니까 ??

하지만 내가 말하는 라인을 제거하면;

if(isset($newImage)) { 
    imagedestroy($newImage); 
} 

다음은 오류가 없습니다. 그러나 나는 그것이 설정되어 있다면 $newImage을 파괴하지 않는다면, RAM에 계속 남아있을 수도 있고 어떤 시점에서 전체 메모리를 먹을 수도 있다고 걱정된다. ?? 어떻게해야합니까? 또한 변수가 언제 자동으로 삭제되는지 알고 싶습니다. ??

답변

3

$image = $newImage 이후 두 변수 모두 과 같음 이미지를 참조하십시오. 복사본이 만들어지지 않습니다. 두 변수는 동일한 자원을 나타내는 두 개의 서로 다른 이름입니다.

당신이 imagedestroy($newImage) 당신이 $image에 의해 유지되는 같은 자원을 확보하고 있습니다로 $newImage가 보유한 리소스를 해제

, 그들은 그것입니다.

이미지가 더 이상 존재하지 않기 때문에 imagedestroy에 대한 두 번째 호출이 실패하는 이유입니다.

수동으로 imagedestroy을 호출하지 않은 경우 PHP는 스크립트가 끝날 때 자동으로 완료했을 것입니다.

+0

니스, 고맙습니다. 나는 또한 그냥 떠나고'$ image'와'$ newImage'를 파괴하지 않는다는 것을 알고 싶습니다. 어떤 시점에서 어떤 시점에서 RAM을 채울 것이라고 생각합니까 ?? 아니면 세션이 파괴되면 즉시 파괴됩니다. ?? 아니면 고정 시간 간격으로? – Sushil

+0

@Sushil PHP 스크립트 실행이 끝나면 파괴됩니다. 그들은 그 시점을 넘어서는 RAM을 채우지 않을 것입니다. –

+0

@ Cicada에 감사드립니다. – Sushil

관련 문제