2012-02-07 4 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.

Первые пять строк вашего образца кода можно заменить:

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

Аналогично, следующие пять строк можно заменить:

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

См: file_get_contents()

EDIT:

$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

Я не уверен, что этот код вызывает утечку памяти. ОЗУ начинает увеличиваться каждый день после того, как у нас появился этот код. Не уверены, может ли fopen() вызвать утечку? –

+0

@KhaHoang: Использование ОЗУ, вероятно, увеличивается, потому что этот код считывает все содержимое двух файлов в память. В зависимости от того, насколько велики файлы, это может быть значительным. Похоже, что с увеличением времени файлы становятся все больше, а это значит, что для чтения содержимого файла в память требуется больше ОЗУ. Подумайте о перезаписи, чтобы не читать файлы в памяти. См. Мое редактирование. –

Смежные вопросы