在此代码段中找不到内存泄漏

时间:2011-11-02 22:10:07

标签: php debugging

使用PHP 5.3.5版 我疯了。 这段代码给了我很多时间。在我刷新Apache的页面几次后,我得到了奇怪的结果。我想我这里有内存泄漏,但我找不到原因。 请帮忙!

<?php 


function ost($active_sub_time,$arr_subscription_values)
{

    $result=0;

    while($active_sub_time>=12)
    {
        $active_sub_time-=12;
        $result+=($arr_subscription_values['COST_12']);
    }

    while($active_sub_time>=6)
    {
        $active_sub_time-=6;
        $result+=($arr_subscription_values['COST_6']);
    }
    while($active_sub_time>=3)
    {
        $active_sub_time-=3;
        $result+=($arr_subscription_values['COST_3']);
    }

    while($active_sub_time>=1)
    {
        $active_sub_time-=1;
        $result+=($arr_subscription_values['COST_1']);
    }

    if($active_sub_time>0)
        $result+=($active_sub_time)*($arr_subscription_values['COST_1']);

    if (!is_numeric($result))
    {
        echo"<br> Bug occurred";break; // print other values if necessary
    }

    return $result;
}

$datetime1 = date_create('2009-01-11');
$datetime2 = date_create('2001-11-09');
$interval = date_diff($datetime1, $datetime2);
$num_of_months = ($interval->y)*12 + ($interval->m) + ($interval->d)/(cal_days_in_month(CAL_GREGORIAN, $datetime2->format("m"), $datetime2->format("Y")));

$v = array('COST_1'=>'3.99','COST_3'=>'9.99','COST_6'=>'15.99','COST_12'=>'24.99');
echo "OPT value for $num_of_months months=".ost($num_of_months,$v);

?>

我最初得到这个结果:

OPT value for 86.066666666667 months=183.176

但经过几次刷新后我得到了这个:

OPT value for G.GMMMMMMMMMMMN months=183.176

有谁知道这是为什么? 感谢

1 个答案:

答案 0 :(得分:0)

无法重现,我完全使用了你的代码,并多次执行它。它显示相同的结果。

您的服务器可能存在问题,或者一遍又一遍地混合刷新会导致某种问题或内存限制。

检查你的php.ini,看看你的内存限制是设置得太低,还是最大请求?