つい最近ハマったのですが、PHP5.1から、shutdown関数と出力バッファリング関数の両方を使った時の処理順が変更になっているようです。(PHP5.0.x は、PHP4と同じ)
<?php
register_shutdown_function( 'sf' ) ;
ob_start( 'ob' ) ;
echo 'main ' ;
function ob( $s )
{
return $s.'ob ' ;
}
function sf()
{
echo 'sf ' ;
}
?>
main ob sf
main sf ob
<?php
register_shutdown_function( 'sf' ) ;
ob_start( 'ob' ) ;
echo 'main ' ;
function ob( $s )
{
return $s.'ob ' ;
}
function sf()
{
while( @ob_end_flush() ) ;
echo 'sf ' ;
}
?>