2016-02-22 3 views
1

Если я пишу строку в файл, затем очищаю буфер, а затем записываю вторую строку, а затем ищем начало и читаем файл - он читает только первую строку. Это похоже на то, что я не думаю, что написал вторую строчку.Как отключить буферы чтения/записи файлов PHP?

Код для воспроизведения:

$fh = fopen('filename.dat', 'r+'); 
stream_set_write_buffer($fh, 0); 
stream_set_read_buffer($fh, 0); 
fwrite($fh, "Testing 123.\n"); 
fflush($fh); 
fwrite($fh, "Testing 456.\n"); 
fflush($fh); 
fseek($fh, 0); 
echo fgets($fh, 26); 
fclose($fh); 

Это будет выводить ...

"Testing 123.\n" 

вместо

"Testing 123.\nTesting 456.\n". 

Я использую PHP 5.4.16.

Помощь! Это сводит меня с ума!

ответ

1

fgets() читает одну строку, то есть если он встречает символ линии/каретки, он прекращает чтение.

Возможно, вас заинтересует http://docs.php.net/fread

+0

DOH! Не могу поверить, что я пропустил это. Благодаря! –

Смежные вопросы