Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие файла. Теоретический вопрос про fclose; 
V
    Опции темы
Guedda
Дата 17.1.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



В книге "PHP5 в подлиннике" авторов Д. Котерова и А. Костарева, на стр. 359 написано:
Цитата

Как и в С, работа с файлами в РНР разделяется на три этапа. Сначала файл открывается в нужном режиме, при этом возвращается некое целое число, служащее идентификатором открытого файла (дескриптор файла). Затем настает очередь команд работы с файлом (чтение или запись), причем они "привязаны" уже к дескриптору файла, а не к его имени. После этого файл лучше всего закрыть (хотя это можно и не делать, поскольку РНР автоматически закрывает все файлы по завершению сценария).

Начал я экспериментировать с этим (то, что можно без fclose работать).
Всегда, с любой РНР получался поврежденный файл, который впоследствие даже блокнотом открыть невозможно.

Сразу скажу, чтобы не писали, типа "Закрывай файл, и все будет ОК", так как я разбираюсь с этим, а не просто программирую...

Опишу свою сисму:
OC: Windows 2000 Server
Server Apache
PHP (пробовал на 3,4) сейчас 5

Если Вы не против, давайте разберемся в ситуации.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Illuminaty
Дата 17.1.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Guedda, попробовал я сейчас такой код
Код

$file = fopen("filename", "a"); 
fwrite($file, "1\n"); 
fwrite($file, "2\n"); 

т.е. без закрытия и файл filename нормально закрылся при завершении сценария.

OC: Windows XP
Server Apache
PHP 5
PM MAIL ICQ   Вверх
Guedda
Дата 17.1.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Тогда в чем может быть проблема у меня?
Сколько раз пробовал, одна беда:
Цитата

Файл поврежден. Запустите CHKDSK.

Раз 15 пытался. На разных версиях РНР.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Illuminaty
Дата 17.1.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



код выложи
хотя бы частично
PM MAIL ICQ   Вверх
Guedda
Дата 17.1.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Я ж говорю, что просто разбираюсь. Вот ПОЛНЫЙ КОД:
Код

<?
  $filename="../data/file.txt";
  $f=fopen($filename, "at");
  fwrite($f, "Yo Rap!");
?>

Все.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Guedda
Дата 17.1.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Почитал дальше и нашел такое:
стр. 364 того же учебника
Цитата

После работы файл лучше закрыть. На самом деле это делается автоматически при завершении сценария, но лучше все же не искушать судьбу и законы Мэрфи...

Что это за законы?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Illuminaty
Дата 17.1.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Цитата(Guedda @ 17.1.2006, 12:38 Найти цитируемый пост)
Что это за законы?

Вот нашел Прочти - пригодится
Добавлено @ 12:17
А твой код у меня нормально работает. Но в основном, я согласен с автором учебника - файл надо закрывать!
PM MAIL ICQ   Вверх
Guedda
Дата 17.1.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Я понял. Но также я понял, что автор учебника не просто так начал разговор за то, что файл можно не закрывать.
Так в чем, интересно, проблема?
Давайте мыслить на уровне ядра...


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Illuminaty
Дата 17.1.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Цитата(Guedda @ 17.1.2006, 14:35 Найти цитируемый пост)

Давайте мыслить на уровне ядра...

Начинай smile

PM MAIL ICQ   Вверх
Guedda
Дата 17.1.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: нет
Всего: 78



Я хочу разобраться...
Если не интересно, никто никого не обязывает :-(


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Illuminaty
Дата 17.1.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Guedda, ты хочешь разобраться или хочешь чтобы за тебя разобрались?
Если первое, то ты сам должен начать рыть...
PM MAIL ICQ   Вверх
Mal Hack
Дата 17.1.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Когда ты работаешь с файлом, запись в файл не идет при каждом вызове fwrite.
Данные сначала пишутся в некий буфер, по его накополнении, сидываются уже в сам файл.
При закрытии файла буфер, даже если он не полный скидывается в файл и сам файл закрывается, тобишь туда пишется символ конца файла и освобождается указатель ссылки на файл.
PM ICQ   Вверх
Illuminaty
Дата 17.1.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Mal Hack, это понятно, но вопрос то в другом.
Guedda, спрашивает, насколько я его понял, почему при завершении работы скрипта у него не закрывается файл.
PM MAIL ICQ   Вверх
Mal Hack
Дата 17.1.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Illuminaty а ты думаешь, что:
Цитата(Guedda @ 17.1.2006, 10:10 Найти цитируемый пост)

После этого файл лучше всего закрыть (хотя это можно и не делать, поскольку РНР автоматически закрывает все файлы по завершению сценария).

Правда? Я думаю что нет.
PM ICQ   Вверх
Illuminaty
Дата 17.1.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: нет
Всего: 56



Я не понял, про что ты думаешь.
Что не надо закрывать файл и пусть он сам закроется после работы скрипта?
Я думаю, что
Цитата(Illuminaty @ 17.1.2006, 13:16 Найти цитируемый пост)

Но в основном, я согласен с автором учебника - файл надо закрывать!


PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0955 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.