stream_set_write_buffer() を実行しても効果がない

PHPのfgetcsvやfputcsvでファイルを扱う時の排他処理(donkのPHP日記)を読んで、昔 stream_set_write_buffer() について調べていたのを思い出しました。

stream_set_write_buffer() は、「指定されたストリームのファイルバッファリングを有効にする」という関数なのですが、いくつかのサイトでは、ファイルの書き込み時に、この関数を使用して書き込みバッファを 0 にすることが推奨されています。

ただ、PHP 4.3.2 以降から、fopen() で得られたリソースに対して stream_set_write_buffer() を実行しても、-1 (EOF)を返します(成功時には、0 を返します。PHP: stream_set_write_buffer - Manual)。
Windows 版と Linuxコンパイルした PHP 5.2.9 や PHP 5.3.0 RC2 で確認してみましたが、修正されていませんでした。このため、現状の stream_set_write_buffer() は実行しても意味がない関数だと思われます。

参考 URI:

スクリプト例:

<?php
$fp = fopen( "test.txt", "w" );
var_dump( stream_set_write_buffer( $fp, 0 ) );

結果:

int(-1)