PHP在echo上崩溃了

时间:2018-01-24 20:37:56

标签: php buffer

我正在为我的客户调试一个开源PHP软件(不是免费的)。 它是一个收银软件。 它们与包含748行的文档存在问题。 尝试显示文档时,PHP崩溃,用户必须等待超时。

它在那个回声上崩溃了(不是affichageUneLigne函数,但真的在回声上):

while ($r_sql = mysql_fetch_array($result)) {
    echo affichageUneLigne($conn_mag, $r_sql, $typePRIX, $articleTEMPS, $clienDe, $caissier, $themeCAISSE, $provenance);

    print '<div id="clearer"></div>';

    $cptLIGNE++;
}

当我这样做时:

while ($r_sql = mysql_fetch_array($result)) {
    if ($r_sql['DL_Ligne'] < 6360000){
        echo affichageUneLigne($conn_mag, $r_sql, $typePRIX, $articleTEMPS, $clienDe, $caissier, $themeCAISSE, $provenance);

        print '<div id="clearer"></div>';

        $cptLIGNE++;
    }
}

或那:

while ($r_sql = mysql_fetch_array($result)) {
    if ($r_sql['DL_Ligne'] >= 6360000){
        echo affichageUneLigne($conn_mag, $r_sql, $typePRIX, $articleTEMPS, $clienDe, $caissier, $themeCAISSE, $provenance);

        print '<div id="clearer"></div>';

        $cptLIGNE++;
    }
}

有效。 (知道DL_Ligne是行号为1000的行号。)

我考虑了缓冲区长度问题,但在该行之前的ob_flush并没有解决它,也没有增加memory_limit参数。

PS:不要问我,这个软件的开发人员有混合的回音和打印,它在代码中到处都是这样......

1 个答案:

答案 0 :(得分:1)

如果你做这样的事情会怎么样?

<?php 

$outputArray = [];

while ($r_sql = mysql_fetch_array($result)) {
    $outputArray[] = affichageUneLigne($conn_mag, $r_sql, $typePRIX, $articleTEMPS, $clienDe, $caissier, $themeCAISSE, $provenance);

    $cptLIGNE++;
}

$outputString = implode('<div id="clearer"></div>', $outputArray);

echo $outputString . '<div id="clearer"></div>';