2012-02-07 6 views
-3

나는 초보자입니다. 메모리 누수가 발생했는지 확인하기 위해 도움이 필요한 코드 조각이 있습니까? 이 코드의 개념은 status.txt 파일이 비어 있지 않으면 웹 페이지에 내용이 표시되는지 확인하고,이 파일이 비어 있지 않으면 readmore.txt를 검사하여 파일에 대한 하이퍼 링크를 갖습니다. 여기 은이 코드는 메모리 누수를 일으키는 것으로 생각하는 이유 코드,이 PHP 코드로 인해 메모리 누수가 발생합니까?

$statusfile = "status.txt"; 
$handle = fopen($statusfile, "r"); 
$string = ''; 
while (!feof($handle)) { $string .= fgets($handle); } 
fclose($handle); 

$readmore_file_path = 'readmore.txt'; 
$handle2 = fopen($readmore_file_path, "r"); 
$string2 = ''; 
while (!feof($handle2)) { $string2 .= fgets($handle2); } 
fclose($handle2); 

$strTxt = 'SYSTEM STATUS<br>'; 

if ('' != $string) 
{ 
    $strTxt .= $string; 
    if ('' != $string2) { $strTxt .= '. <a href="readmore.txt"> More details</a>'; } 
    $strTxt .= '<br>'; 
    echo $strTxt; 
} 

답변

3

도와주세요입니까? 순수한 PHP로 작성된 것은 메모리가 누출되지 않아야합니다. PHP 코드 누수가있는 경우 PHP의 버그입니다.

이 코드 샘플의 처음 다섯 개 라인으로 대체 할 수 있습니다

$readmore_file_path = "readmore.txt"; 
$string2 = file_get_contents($readmore_file_path); 

참조 : file_get_contents()

$statusfile = "status.txt"; 
$string = file_get_contents($statusfile); 

마찬가지로, 향후 5 개 라인으로 대체 할 수있다 편집 :

$status_file = "status.txt"; 
$readmore_file = "readmore.txt"; 

if (filesize($status_file) != 0) { 
    echo "SYSTEM STATUS<br>"; 

    readfile($status_file); 

    if (filesize($readmore_file) != 0) { 
     echo ". <a href=\"readmore.txt\">More details</a>"; 
    } 

    echo "<br>"; 
} 
+0

그 코드가 메모리 누수의 원인인지 확실하지 않습니다. RAM은 우리가 그 코드를 정한 후에 매일 증가하기 시작합니다. fopen()이 새어 나올 수 있는지 확실하지 않은가요? –

+0

@KhaHoang :이 코드는 두 파일의 전체 내용을 메모리로 읽어 오기 때문에 RAM 사용이 늘어날 가능성이 높습니다. 파일의 크기에 따라 중요 할 수 있습니다. 시간이 지남에 따라 파일 크기가 커짐에 따라 파일 내용을 메모리로 읽는 데 더 많은 RAM이 필요하다는 것도 들립니다. 파일을 메모리에 읽지 않도록 다시 작성하십시오. 내 편집을 참조하십시오. –

관련 문제