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