echo 等于 fputs( STDout ) 吗?

发布于 11-29 11:37 字数 121 浏览 0 评论 0原文

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清引2024-12-06 11:37:44

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

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 处理程序。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文