does echo equal fputs( STDout )?
Does echo
equal fputs( STDOUT )
, or does echo
write to a different stream? 开发者_开发技巧I've used PHP for a while now, but I don't know very well what's actually happening on a lower level.
According to PHP's manual page on wrappers, the answer is No.
php://output
php://output is a write-only stream that allows you to write to the output buffer mechanism in the same way as print() and echo().
print
and echo
write to php://output
stream, whereas fputs(STDOUT)
writes to php://stdout
.
I did a little test:
<?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";
This script outputs (tested on PHP 5.2.13, windows):
writing to stdout directly
ob_contents: regular echo
writing to php://output directly
i.e. writing to STDOUT
directly bypasses ob handlers.
精彩评论