我有145064642个字符长的HTML字符串,我正在尝试打印。
当我尝试在其上回显/var_dump/死亡时,它会导致页面返回 false(0),但如果我尝试只打印变量的一半,它工作正常。
例子:
不工作:
echo $MY_HTML_STR;
die($MY_HTML_STR);
var_dump($MY_HTML_STR)
两条线中的每一条都有效:
die(var_dump(substr($MY_HTML_STR,strlen($MY_HTML_STR)/2)));
die(var_dump(substr($MY_HTML_STR,0,strlen($MY_HTML_STR)/2)));
但是当尝试将两者打印在一起时:
var_dump(substr($MY_HTML_STR,strlen($MY_HTML_STR)/2));
die(var_dump(substr($MY_HTML_STR,0,strlen($MY_HTML_STR)/2)));
它又崩溃了。
一种回声方式确实给了我一个错误:
echo <<<EOF
TEXTTEXT...
$MY_HTML_STR
BLABLAHTML...
EOF;
错误:Fatal error: Out of memory (allocated 324009984) (tried to allocate 145090561 bytes) in .....page.php on line 675
675路是EOF;
线。该脚本正在使用WAMPSERVER在我的家用计算机上运行,memory_limit设置为-1(无限制)。
检查输出缓冲是否打开。请记住,如果启用了输出缓冲,则输出的所有内容都将保留在内存中,直到输出被刷新(这也在脚本关闭时隐式发生)。
在打印之前尝试使用 ob_end_clean(),看看是否能解决您的问题。
另外,请尝试在打印之前添加以下代码。您可能处于嵌套输出缓冲中(例如,如果您在 php 中启用了它.ini并在脚本开头调用ob_start)
print ob_get_level();
exit;
echo 不喜欢太长的字符串。 如果要打印,请使用 for 循环将其拆分为较小的字符串,substr() 约为 10000 个字符或更小,如果这会产生问题。
您超出了内部写入缓冲区太多。