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

Форум PHP

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

 

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

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

тема: прочитать и удалить первую строчку файла
 
 автор: felamon   (18.05.2007 в 21:07)   письмо автору
 
 

собственно сабж)
как сделать это если файл txt очень большой и чтоб не тратить много ресурсов...

   
 
 автор: Valick   (18.05.2007 в 21:50)   письмо автору
 
   для: felamon   (18.05.2007 в 21:07)
 

файл txt очень большой
Что большой чего большой... непонятно.
Какая цель? Насколько большой? Может проще использовать базу данных, или dba (плоские) файлы?

   
 
 автор: felamon   (18.05.2007 в 22:08)   письмо автору
 
   для: Valick   (18.05.2007 в 21:50)
 

1000 слов

   
 
 автор: Саня   (18.05.2007 в 21:51)   письмо автору
 
   для: felamon   (18.05.2007 в 21:07)
 

Вам помогут функции fopen() и fread() (или fgets()).

   
 
 автор: felamon   (18.05.2007 в 22:08)   письмо автору
 
   для: Саня   (18.05.2007 в 21:51)
 

они твари все! читают файл целиком!

   
 
 автор: PantiL   (18.05.2007 в 23:30)   письмо автору
 
   для: felamon   (18.05.2007 в 22:08)
 

>они твари все! читают файл целиком!
а вот и нет!!!

Цитата из мануала:
string fread (int fp, int length)

fread() читает length байт из указателя файла, на который ссылается fp. Чтение останавливается, если прочитано length байт или если достигнут EOF (конец файла), смотря что вперёд.

ИМХО 1000 слов это совсем не много

   
 
 автор: felamon   (19.05.2007 в 11:45)   письмо автору
 
   для: PantiL   (18.05.2007 в 23:30)
 

как прочитать только первую строку я понял, а как удалить только её?

   
 
 автор: kasmanaft   (19.05.2007 в 13:29)   письмо автору
 
   для: felamon   (19.05.2007 в 11:45)
 

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

   
 
 автор: Trianon   (18.05.2007 в 23:31)   письмо автору
 
   для: felamon   (18.05.2007 в 22:08)
 

ничего подобного. Они читают ровно столько, сколько просите. Можете еще fgetc применить, и читать вообще посимволько. Быстрее, правда, не будет.

   
 
 автор: Trianon   (18.05.2007 в 23:29)   письмо автору
 
   для: felamon   (18.05.2007 в 21:07)
 

если файл действительно очень большой, нужно организовать алгоритм так, чтобы удалять эту строку не приходилось.
1000 слов - это немного. 5-15Кб.

   
 
 автор: felamon   (19.05.2007 в 11:47)   письмо автору
 
   для: Trianon   (18.05.2007 в 23:29)
 

да но возможно будет и больше и удалять нужно по одной строчке циклом...что замедлит систему!

   
 
 автор: Trianon   (19.05.2007 в 14:45)   письмо автору
 
   для: felamon   (19.05.2007 в 11:47)
 

Я же написал, сделаете так, чтобы удалять строки стало ненужно - не будет тормозов.
Удаление строки, как правильно отметил kasmanaft - массовая операция, требующая перезаписи всего файла.

   
 
 автор: Valick   (20.05.2007 в 08:07)   письмо автору
 
   для: Trianon   (19.05.2007 в 14:45)
 

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

   
 
 автор: Trianon   (20.05.2007 в 11:36)   письмо автору
 
   для: Valick   (20.05.2007 в 08:07)
 

Что именно, и где именно? :)

   
 
 автор: Valick   (20.05.2007 в 12:44)   письмо автору
 
   для: Trianon   (20.05.2007 в 11:36)
 

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

   
 
 автор: Trianon   (20.05.2007 в 13:15)   письмо автору
 
   для: Valick   (20.05.2007 в 12:44)
 

вот только файл текстовым уже не назовешь.
И даже такие накладные расходы могут оказаться в конечном итоге неприемлимыми.

К чему я это веду... Подумать над алгоритмом в любом случае невредно.

   
 
 автор: Valick   (20.05.2007 в 14:03)   письмо автору
 
   для: Trianon   (20.05.2007 в 13:15)
 

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

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

Подумать над алгоритмом в любом случае невредно.
Думать никогда не вредно))))))))

   
Rambler's Top100
вверх

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