echo无法正常数据的奇怪现象

最近在看wm源码,发现了一个奇怪的现象
parseCommand方法中有一个调用
$mode = '';
if ($command === 'start') {
if ($command2 === '-d' || static::$daemonize) {
$mode = 'in DAEMON mode';
} else {
$mode = 'in DEBUG mode';
}
}
static::log("Workerman[$start_file] $command $mode");

// Get master process PID.
$master_pid = \is_file(static::$pidFile) ? \file_get_contents(static::$pidFile) : 0;

static::log之前的echo都可以正常输出到终端,在static::log之后的echo都无法正常输出,比如
echo 123213;
static::log("Workerman[$start_file] $command $mode");
这个echo是无法输出的,但是
echo "123213\n";
static::log("Workerman[$start_file] $command $mode");

这个echo又能正常输出了
 
 
源码我看了一遍,没有发现什么问题,不知道是什么原因造成的,用的是linux,非守护进程模式调试
已邀请:

blogdaren - 乐于分享的PHP码农【http://www.blogdaren.com】

赞同来自: zhuxiaoyu

源码中有这么一行: 
$line = "\033[1A\n\033[K"; 
正是此行终端ANSI控制码引起的:
033[1A:代表把光标向上移动1行
\033[K:代表清空从光标位置到当前行末的内容。
所以要正常的echo,行末加上换行符。

要回复问题请先登录注册