php实现重定向标准输出

在写守护进程程序的时候需要用到重定向标准输出到指定文件,所以呢?下面的代码可以实现!

$errlog = "/tmp/my.error";
global $STDOUT,$STDERR;
fclose(STDOUT);
fclose(STDERR);
$STDOUT = fopen($errlog, "a");
$STDERR = fopen($errlog, "a");

是不是很简单?
原理呢?大家都知道标准输出跟标准错误对应php的前三个资源描述符对应的是:

// 这段代码是ide带的提示信息,php源码里面没有
define ('STDIN', "Resource id #1");
define ('STDOUT', "Resource id #2");
define ('STDERR', "Resource id #3");

当我们释放了旧的STDOUT和STDERR,然后打开的文件的描述符就占了这两个描述符,然后php就把你新打开的两个描述符当成了标准输出的描述符,所以就实现了标准输出重定向的功能。

转载请注明:小Y » php实现重定向标准输出

赞 (6) 评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址