Является ли echo равным fputs( STDOUT ) или выполняет echo запись в другой поток? Некоторое время я использовал PHP, но я не очень хорошо знаю, что на самом деле происходит на более низком уровне.
Согласно справочной странице PHP на обертках , ответ №.
PHP: // выводим
php: // output – это поток только для записи, который позволяет вам записывать в выходной буферный механизм так же, как 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 обработчиков.