Является ли 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 обработчиков.