我正在为我的客户调试一个开源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:不要问我,这个软件的开发人员有混合的回音和打印,它在代码中到处都是这样......答案 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>';