php命令行应用程序中只有echo或printf等一些字符串的区别,而不是获取stdout流并写入它,即
$stdout = fopen('php://stdout', 'w');
答案 0 :(得分:7)
首先想到的是输出缓冲。 echo
和print
与输出缓冲机制接口,但直接写入stdout会绕过它。
考虑这个脚本:
<?php
$stdout = fopen('php://stdout', 'w');
ob_start();
echo "echo output\n";
fwrite($stdout, "FWRITTEN\n");
echo "Also echo\n";
$out = ob_get_clean();
echo $out;
输出:
FWRITTEN
echo output
Also echo
表明echo
是缓冲的,而fwrite不是。
答案 1 :(得分:2)
不同之处在于echo
写入php://output
这是输出缓冲流。
但是,php://stdout
使您可以直接访问未缓冲的进程输出流。
有关流的更多信息,请参阅手册:http://www.php.net/manual/en/wrappers.php.php
答案 2 :(得分:0)
除了已经注意到的技术差异之外,在风格和惯例方面也存在明显的差异。 echo
/ print
是在PHP中生成输出的常规方法;写入输出就像对文件一样会出现异常并可能造成混淆。为了清楚你的意图,我不建议这样做,除非你有充分的理由这样做。
答案 3 :(得分:0)
这里php://stdout
不是缓冲流,fwrite可以使用php://output
缓冲输出