在PHP中打印变量会导致服务器返回false
我有145064642个字符长的HTML字符串,我正在尝试打印 当我尝试echo/var_dump/die时,它会导致页面返回false(0),但如果我尝试只打印变量的一半,它工作正常 示例: 不工作:在PHP中打印变量会导致服务器返回false,php,variables,memory,printing,echo,Php,Variables,Memory,Printing,Echo,我有145064642个字符长的HTML字符串,我正在尝试打印 当我尝试echo/var_dump/die时,它会导致页面返回false(0),但如果我尝试只打印变量的一半,它工作正常 示例: 不工作: echo$MY\u HTML\u STR die($MY\u HTML\u STR) var\u dump($MY\u HTML\u STR) 两条线路中的每一条线路工程: die(var_dump(substr($MY_HTML_STR,strlen($MY_HTML_STR)/2)) die
echo$MY\u HTML\u STR代码>
die($MY\u HTML\u STR)代码>
var\u dump($MY\u HTML\u 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;
echoecho不喜欢太长的字符串。如果要打印,请使用for循环将其拆分为更小的字符串,substr()大约为10000个字符,如果出现问题,则更小
您超出了内部写入缓冲区的容量太多。检查输出缓冲是否打开。请记住,如果启用了输出缓冲,则输出的所有内容都将保留在内存中,直到刷新输出为止(这在脚本关闭时也会隐式发生)
在打印之前,请尝试使用ob_end_clean(),看看这是否解决了您的问题
此外,请在打印前尝试添加以下代码。您可以使用嵌套输出缓冲(例如,如果在php.ini中启用了它,并且在脚本的开头调用ob_start)
这可能与您的问题没有直接关系,但是var\u dump()
不会返回任何内容。运行die(var_dump(…)
与运行die(null)
或die(0)
类似,当然,它们会随着code0退出。与回声相同echo(var_dump(…)
将在var_dump()
运行后打印null
。您的系统有多少RAM?还有哪些正在运行的程序正在耗尽您的RAM?(操作系统、浏览器、FTP程序、文本/html编辑器…)错误。。即使是真的,echo$MY_HTML_STR
也会导致相同的错误。@TecBrat我有2.5GB的真实RAM和1.5GB的虚拟RAM,所以系统可以运行到4GB。但是我遵循了httpd.exe过程,它没有通过1GB,使用的RAM总量也没有通过2.25GB。@eranj,您可以在刚刚链接到的手册页面的“返回值”部分看到“没有返回值”。这意味着它不会返回任何东西。同样,这可能与您的问题没有直接关系,我只是指出您不应该调用echo(var_dump(…)
或die(var_dump(…)
,而应该是var_dump(…)
。这是echo
限制的文件吗?我在echo php文档的用户评论中读到了它。我曾经遇到过类似的问题,这重新解决了我的问题。您可以将其与在ince尝试在打印机中填充2000个打印作业进行比较,打印机将失败,或者计算机上的spool服务器也会失败。ob_get_level()返回true(1);根据@Michael Dibbets的回答,将ob\u end\u clean()
和substr()循环结合起来解决了这个问题。非常感谢。
print ob_get_level();
exit;