Php 不损失时间的日志记录

Php 不损失时间的日志记录,php,Php,格里茨伙计们 我正在寻找一种在不浪费时间的情况下记录CLI脚本操作的方法。我做了一些基准测试,我发现通过echoing在每个操作后执行一些操作,脚本将慢近2倍,通过将操作附加到日志文件,脚本将慢17倍 因此,任何人都有解决方案吗?登录到文件应该比回显到屏幕快得多(显示文本的过程很可能是限制) 因此,您可以简单地将调试写入一个文件,并(如果需要)使用“tail-f”文件查看实时调试。(我假定您正在Linux/Unix等环境下运行) 作为一项建议: function logDebugToFile($

格里茨伙计们

我正在寻找一种在不浪费时间的情况下记录CLI脚本操作的方法。我做了一些基准测试,我发现通过
echo
ing在每个操作后执行一些操作,脚本将慢近2倍,通过将操作附加到日志文件,脚本将慢17倍


因此,任何人都有解决方案吗?

登录到文件应该比回显到屏幕快得多(显示文本的过程很可能是限制)

因此,您可以简单地将调试写入一个文件,并(如果需要)使用“
tail-f
”文件查看实时调试。(我假定您正在Linux/Unix等环境下运行)

作为一项建议:

function logDebugToFile($string) {

    // Set defaults...
    $filename = 'INSERT REQUIRED PATH/FILENAME HERE.log';

    $ourFP = fopen($filename, 'a+');
    if (is_resource($ourFP)) {
        fwrite($ourFP, $string."\n");
        fclose($ourFP);
        return true;
    }

    return false;
}

如果您使用的是CLI,我想您可以使用以下方法进行测试:

YOUR_SCRIPT.php > /tmp/log.txt &
YOUR_SCRIPT.php内部

<?
  /* some action */
  echo date('r').some_action_1()."\n";   <-- this is bad  # REMARK 1
  echo date('r').some_action_2()."\n";

  echo date('r'), some_action_1(), "\n"; <-- this is nice # REMARK 2
  echo date('r'), some_action_2(), "\n";
?>

备注1速度慢的原因是函数先执行,而REMAKR 2不(先输出)

登录到TCP资源/套接字。并在网络中添加一个侦听器。所以没有I/O。

不太可能。做事情需要时间。。。但这通常并不重要,因为这是一个微秒的问题。你到底在干什么?很难相信,
echo
语句会在这种情况下减慢脚本的速度badly@Pekka-怀疑是在终端上显示回显内容等过程减慢了速度。您如何尝试保存到日志文件?日志文件是否在本地存储上?(不是远程或SAN或其他奇怪的东西。)我就是这么做的,因为这需要很多额外的时间。@sexyprout-如果你要做大量的日志记录,最好在开始时打开文件,在结束时关闭,而不是上面提到的。这就是说,这应该仍然比输出到屏幕快得多。日志文件是否在本地文件系统上?
tail -f /tmp/log.txt