PHP 回显时崩溃

PHP crashes on echo

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

它在那个 echo 上崩溃(不是 affichageUneLigne 函数,而是在 echo 上):

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: 别问我这个软件的开发者把echo和print混在一起了,代码里到处都是这样...

如果你这样做会发生什么?

<?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>';