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>';
我正在为我的客户调试开源 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>';