【问题标题】:How to write in stdout repeatedly with php如何用php重复写入stdout
【发布时间】:2014-01-13 12:47:11
【问题描述】:

我想为我的应用开发一个 cli debug 功能,它将打印出有关 URI 请求的所有信息,例如内存使用情况、路由、经过的时间、sql 查询等...

如何将此信息写入控制台。当我从终端激活程序时,它会等待请求,然后将信息打印到输出。我得到了这个 hacky 代码:

$this->console->writeln("<info>Enter Ctrl+C to exit.</info>");
while(true) {
    sleep(5);
    $this->console->writeln("<info>$profileInfo</info>");
}

我正在使用 Symfony2 控制台组件,因为标签 &lt;info&gt; 只是一个伪代码。 任何帮助将不胜感激。

【问题讨论】:

  • 如果你是从终端运行它,为什么不在你的 PHP 代码中使用 echo 呢?

标签: php symfony console stdout


【解决方案1】:

听起来好像您正在向 PHP 页面发出 HTTP 请求,但使用控制台组件纯粹是为了实现调试日志记录,对吗?

如果是这样,那么您最好使用“记录器”服务(例如Monolog)来记录文件,然后您可以通过控制台通过运行@实时观察更改987654324@。如果您使用的是全栈 Symfony2 框架,那么它已经作为 logger 服务 (example) 提供。

另外,我不确定你是否已经在使用 Stopwatch Symfony2 组件来进行分析,但如果没有,那么我肯定会推荐它。

编辑:即使您通过命令行运行代码,记录到文件仍然是一个不错的选择。否则,只需按照 jszobody 的建议使用 echo

【讨论】:

  • 为了稳定,我使用了 symfony 组件。它节省了我一些时间来重新发明轮子并编写一些代码来管理 cli 应用程序(获取参数或选项和输出格式化(着色)信息)。我的问题是关于提供一种实际重复写入一些信息以输出的方法。就像当你运行 php -S localhost:8000 时,它会为你提供 Web 服务器日志信息,直到你停止它(按 Crtl+c 或 Crtl+d)。
猜你喜欢
  • 2020-11-13
  • 2019-10-28
  • 2020-12-26
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
相关资源
最近更新 更多