Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обновить файл?
 
 автор: sega_z   (22.09.2011 в 10:30)   письмо автору
 
 

Создаю XML файл при помощи php следующей командой:


...
// Откроем файл (если он есть) или создадим его
$fp = fopen ("yandex_auto.xml", "a+");
...
fclose($fp);


Данный файл создаётся нормально, но его необходимо регулярно обновлять.
При повторном выполнении данного скрипта обновление не происходит!!!

Как сделать, чтобы файл обновлялся?

  Ответить  
 
 автор: cheops   (22.09.2011 в 11:04)   письмо автору
 
   для: sega_z   (22.09.2011 в 10:30)
 

Каково поведение скрипта при обновлении:
1) Удаляются старые записи и записываются новые
2) Старые записи остаются, новы не добавляются

PS Достаточно ли у скрипта прав доступа для обновления файла?

  Ответить  
 
 автор: sega_z   (22.09.2011 в 11:10)   письмо автору
 
   для: cheops   (22.09.2011 в 11:04)
 

Нужно, чтобы удалялись старые записи и добавлялись новые.

Как проверить право доступа для обновления?
Разве для обновления файла существуют отдельные права?

  Ответить  
 
 автор: cheops   (22.09.2011 в 12:06)   письмо автору
 
   для: sega_z   (22.09.2011 в 11:10)
 

Т.е. вам нужно просто переписать файл? Тогда лучше использовать модификатор w+, а не a+. Последний будет дописывать строки в конец существующих записей.

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

  Ответить  
 
 автор: sega_z   (22.09.2011 в 12:38)   письмо автору
 
   для: cheops   (22.09.2011 в 12:06)
 

Модификатор w+ не подойдет, т.к. мне нужно полностью обновить всё содержимое файла.

  Ответить  
 
 автор: cheops   (22.09.2011 в 12:48)   письмо автору
 
   для: sega_z   (22.09.2011 в 12:38)
 

А модификатор w+ именно это и делает, он помещает файловый указатель в начало файла и все, что было до этого в файле уничтожается. В файле остается только то, что вы запишите в него после открытия функцией fopen().

  Ответить  
 
 автор: sega_z   (22.09.2011 в 12:59)   письмо автору
 
   для: cheops   (22.09.2011 в 12:48)
 

Т.е. если файл уже создан и имя файла не будет меняться, то нужно в вышеупомянутом коде заменить а+ на w+

  Ответить  
 
 автор: cheops   (22.09.2011 в 13:23)   письмо автору
 
   для: sega_z   (22.09.2011 в 12:59)
 

Можно, просто заменить a+ на w+ не задумываясь об существовании файла, дело в том, что w+ создаст отсутствующий файл, если его нет (в отличие от обычного w).

  Ответить  
 
 автор: sega_z   (22.09.2011 в 13:39)   письмо автору
 
   для: cheops   (22.09.2011 в 13:23)
 

Все отлично, СПАСИБО!!!

  Ответить  
 
 автор: Drago   (22.09.2011 в 18:14)   письмо автору
 
   для: cheops   (22.09.2011 в 13:23)
 

cheops, отсутствующий файл ведь будет создан и при флаге "w". Разница в возможности чтения открытого файла.

  Ответить  
 
 автор: cheops   (22.09.2011 в 21:43)   письмо автору
 
   для: Drago   (22.09.2011 в 18:14)
 

Да, ошибся, давно уже не пользовался fopen().

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования