PHP获取输出流或只是回显


PHP get output stream or just echo

php命令行应用程序中只回显或打印一些字符串与获取sdtout流并写入它(即)有什么不同

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

我首先想到的是输出缓冲。echoprint与输出缓冲机制接口,但直接写入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没有被缓冲。

不同之处在于echo写入作为输出缓冲流的php://output。但是,php://stdout允许您直接访问未缓冲的进程输出流。

有关流的更多信息,请参阅手册:http://www.php.net/manual/en/wrappers.php.php

除了已经注意到的技术差异之外,还有明显的风格和惯例差异。echo/print是PHP中产生输出的正常方式;像写入文件一样写入输出是不正常的,并且可能会造成混淆。为了清楚你的意图,我不建议你这样做,除非你有充分的理由这样做。

这里php://stdout不是缓冲流,fwrite可以使用php://output 缓冲输出