回声相同的fputs(STDout)?

时间:2011-08-11 14:44:53

标签: php stream stdout

echo是否等于fputs( STDOUT ),或echo是否写入其他流?我已经使用PHP一段时间了,但我不太清楚在较低级别实际发生了什么。

1 个答案:

答案 0 :(得分:41)

根据PHP's manual page on wrappers,答案是否定。

  

PHP://输出

     

php:// output是一个只写的流,允许你写入   输出缓冲机制的方式与print()和echo()相同。

printecho写入php://output流,而fputs(STDOUT)则写入php://stdout

我做了一点测试:

<?php

$output = fopen('php://output', 'w');
ob_start();

echo "regular echo\n";
fwrite(STDOUT, "writing to stdout directly\n");
fwrite($output, "writing to php://output directly\n");

$ob_contents = ob_get_clean();
print "ob_contents: $ob_contents\n";

此脚本输出(在PHP 5.2.13,windows上测试):

writing to stdout directly
ob_contents: regular echo
writing to php://output directly

即。写入STDOUT直接绕过ob处理程序。