Зачем вставляют fflush() при чтении файла функцией fopen()

Wolf - forest dog
На сайте с 06.05.2011
Offline
110
2622

Зачем в код пихают fflush() при чтении файла функцией fopen() ???

Ковыряю перековыриваю один двиг, там везде примерно один и тот же код для чтения файла прописан:

$f = fopen($openfile,"r")

flock($f,1);
$u = fread($f,filesize($openfile));
fflush($f);
flock($f,3);
fclose($f);

Я ваще не пойму для чего ентот fflush нужен в принципе, ибо при записи функцией fopen() он много где встречается. Мануалы на php.net меня не "торкнули". Может по фене кто прояснит делюгу?

Wolf - forest dog
На сайте с 06.05.2011
Offline
110
#2

siv1987, на php.net мне их русский-нерусский не понятен. Я там был, но понять зачем нужен сброс данных из буфера в файл при чтении этого же файла не смог.

Если по другому спросить, то чем физически грозит отсутствие fflush в выше приведённом коде? Сервак что-ли повиснет? Сто лет этот fflush никогда не юзал и всё норм.

izbushka
На сайте с 08.06.2007
Offline
110
#3

При чтении fflush не нужен.

При записи бывает полезен. Дело в том, что если вы сказали fwrite, то данные не обязательно запишутся на диск немедленно. Операционная система может решить отложить запись ввиду высокой нагрузки на диск или по другим причинам. Соответсвенно, если например, выключить питание в это время или, возможно, хотя не уверен, аварийно прибить php, то данные, которые вы считали записанными, потеряются. fflush форсирует запись немедленно.

Wolf - forest dog
На сайте с 06.05.2011
Offline
110
#4

izbushka, спасибо добрый человек, что на понятном русском языке на физическом уровне хоть прояснили.

izbushka:
При чтении fflush не нужен.

Ну вот это я и подозревал, что в код какае-то школота лишнего напихала. А простой flush тоже походу при чтении не нужен, ибо буфер сбрасывается тупо только в браузер или прочитанные данные из файла идут также и для дальнейшего немедленного выполнения скриптом?

IL
На сайте с 20.04.2007
Offline
435
#5
volkovysk:
А простой flush тоже походу при чтении не нужен

"Простой" flush относится не к файловой системе, а к буферизации ответа сервера.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий