最近在看wm源码,发现了一个奇怪的现象
parseCommand方法中有一个调用
$mode = '';
if ($command === 'start') {
if ($command2 === '-d' || static::$daemonize) {
$mode = 'in DAEMON mode';
} else {
$mode = 'in DEBUG mode';
}
}
static::log("Workerman $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 $command $mode");这个echo是无法输出的,但是
echo "123213\n";
static::log("Workerman $command $mode");
这个echo又能正常输出了
源码我看了一遍,没有发现什么问题,不知道是什么原因造成的,用的是linux,非守护进程模式调试
源码中有这么一行: $line = "\033[1A\n\033[K"; 正是此行终端ANSI控制码引起的:033[1A:代表把光标向上移动1行\033[K:代表清空从光标位置到当前行末的内容。所以要正常的echo,行末加上换行符。