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

Форум PHP

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

 

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

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

тема: Перезапись файла "в себя"
 
 автор: Valleri   (03.07.2011 в 10:21)   письмо автору
 
 

     $fp = fopen( $name_file, "r+"); 
      for ($x=0; $x<3000; $x++) { 
          $i++;
          $str= fgets($fp);
          if(«проверка »)  { 
               fputs($fp,$str );
          }
       } 

У меня большие файлы. Перезапись в другой файл и замена копированием требует удвоения места на диске.
Можно ли "в себя" перезаписывать файл?
Как правильно сделать, что бы было корректно?
(массивы из-за размера не получится)

  Ответить  
 
 автор: cheops   (03.07.2011 в 13:42)   письмо автору
 
   для: Valleri   (03.07.2011 в 10:21)
 

А что с файлом происходит, каким изменениям вы его подвергаете? Если это строковые данные, то скорее всего нельзя, придется хотя бы на короткое время создавать копию файла.

  Ответить  
 
 автор: Valleri   (03.07.2011 в 19:01)   письмо автору
 
   для: cheops   (03.07.2011 в 13:42)
 

Необходимо в файле удалить программно строку.
Проблема в том, что
1 - файл большой,
2 - в массив не загрузить,
3 - временный файл займет много места,
4 - приведенный код кромсает файл.

  Ответить  
 
 автор: cheops   (03.07.2011 в 19:38)   письмо автору
 
   для: Valleri   (03.07.2011 в 19:01)
 

Положение строки произвольно? Или примерно известно, что она практически всегда вначале или практически всегда в конце? Это я к тому, что можно сделать копию содержимого меньшей части, возможно она даже уберется в памяти и попробовать оперировать ей.

  Ответить  
 
 автор: Valleri   (03.07.2011 в 19:54)   письмо автору
 
   для: cheops   (03.07.2011 в 19:38)
 

Можно попытаться адаптировать под начало или конец строки, но это надо подвергнуть испытанию временем.
Нет выхода?????

  Ответить  
 
 автор: cheops   (03.07.2011 в 21:14)   письмо автору
 
   для: Valleri   (03.07.2011 в 19:54)
 

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

  Ответить  
 
 автор: Valleri   (04.07.2011 в 10:40)   письмо автору
 
   для: cheops   (03.07.2011 в 21:14)
 

В dbf, пометка делается, но это ничего не дает

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

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