停止php显示到屏幕 - 运行无声

时间:2012-02-04 19:45:28

标签: php linux stdout

我有一个php页面,当从浏览器调用时会显示一个页面,它还会生成一个静态html页面,所以 - http://somewebsite/create.php从浏览器运行时会创建newpage.html。

我也从CLI运行这个页面#php create.php它创建了newpage.html但是我得到了屏幕上的所有输出,这会减慢执行速度,如果我必须多次运行它可能需要几个小时。

有没有办法运行#php create.php并将所有输出压缩到屏幕

MArtyn

2 个答案:

答案 0 :(得分:1)

查看Output Buffering

您从ob_start()开始缓冲输出,然后您可以使用$output = ob_get_clean()获取所有已显示的内容并将其存储在$output中,这样您就可以做任何您想做的事情用它。

我相信有$_SERVER个变量可用于检查您是否从命令行运行。 (显然,您可以检查通常存在的HTTP标头,它们不会从CLI设置)

var_dump($_SERVER)并查看是否有任何直观的看法:)

答案 1 :(得分:0)

您可以将命令行上的输出通过管道传输到/ dev / null,例如:
php http://somewebsite/create.php > /dev/null

这实际上不会阻止php生成输出,只是显示它。

如果您确实想要停止生成输出,可以使用带有ob_start()的php的输出缓冲,并将输出放在代码末尾带有ob_get_flush()的变量中,并且仅在输出时回显输出param未传递给脚本。