【问题标题】:stop php displaying to screen - run silent停止 php 显示到屏幕 - 静默运行
【发布时间】:2012-02-04 19:45:28
【问题描述】:

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

我还从 CLI #php create.php 运行此页面,它会创建 newpage.html,但我会在屏幕上显示所有输出,这会减慢执行速度,如果我必须多次运行它可能需要数小时。

有没有办法运行#php create.php 并抑制所有输出到屏幕

马丁

【问题讨论】:

  • 使用您的 bash 语法:在命令末尾附加“&”。或者使用 | 将其通过管道传输到 /dev/null
  • 你能选一个正确的答案吗

标签: php linux stdout


【解决方案1】:

查看Output Buffering

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

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

var_dump($_SERVER) 看看有没有直观的东西:)

【讨论】:

    【解决方案2】:

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

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

    如果你真的想停止输出,你可以使用 php 的输出缓冲与 ob_start() 并在代码末尾使用 ob_get_flush() 将输出放入变量中,并且仅在某些情况下才回显输出参数是/未传递给脚本。

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2022-10-22
      • 2021-10-27
      相关资源
      最近更新 更多