echo 是否等于 fputs( STDout )? [英] does echo equal fputs( STDout )?

查看:12
本文介绍了echo 是否等于 fputs( STDout )?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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.

推荐答案

根据 PHP 的包装器手册页,答案是否定的.

According to PHP's manual page on wrappers, the answer is No.

php://输出

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

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().

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

print and echo write to php://output stream, whereas fputs(STDOUT) writes to php://stdout.

我做了一个小测试:

<?php

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

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

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

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

This script outputs (tested on PHP 5.2.13, windows):

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

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

i.e. writing to STDOUT directly bypasses ob handlers.

这篇关于echo 是否等于 fputs( STDout )?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆