эхо равно fputs (STDout)? - PullRequest
       11

эхо равно fputs (STDout)?

28 голосов
/ 11 августа 2011

echo равно fputs( STDOUT ) или echo пишет в другой поток? Я уже некоторое время использую PHP, но я не очень хорошо знаю, что на самом деле происходит на более низком уровне.

1 Ответ

42 голосов
/ 11 августа 2011

Согласно странице руководства PHP по оболочкам ответ - нет.

php: // output

php: // output is write- только поток, который позволяет записывать в механизм выходного буфера таким же образом, как print () и echo ().

print и echo запись в поток 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.

...