这个PHP代码会导致内存泄漏吗?

时间:2012-02-07 23:42:27

标签: php memory-leaks fopen

我是新手。我有这段代码需要你的帮助来检查它是否会导致内存泄漏?这个代码的想法是检查status.txt文件是否为空,然后其内容将显示在网页中,它还检查readmore.txt如果此文件不为空,它将具有指向文件的超链接。 这是代码,请帮忙

$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;
}

1 个答案:

答案 0 :(得分: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()

修改

$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>";
}