быстрая работа скрипта (without mysql ofcorse)

  • Автор темы Автор темы HOCOK
  • Дата начала Дата начала

HOCOK

Guest
быстрая работа скрипта (without mysql ofcorse)

Есть файл
db.txt (size 100mb)

есть ли быстрые способы - поиска по файлу, выбирать допустим 5325 строчку из файла, заменять и перезаписывать файл приблизительно с той же скоростью что и mySQL db.

???
 
HOCOK sakon
Надо ведь перезаписать строку (линию), так что fseek'ом не обойтись. Либо по принципу SQL, добавлять столько NUL-байтов в конец каждого ряда (в данном контексте - каждой линии), чтобы каждая линия (т.е. ряд) имела одинаковый размер, таким образом перейти на любую строку можно будет через fseek($fp,$size*$n);, где $size - вышеописанный размер ряда, а $n - номер нужной строки. Тогда скорость будет близкой к реляционной СУБД.
Если же размер ряда нельзя унифицировать, следует применить fgets. Например для выборки строки:
PHP:
$fp = fopen('db.txt','r');
$n = 5325; // номер нужной строки
$i  = 0;
$line  = '';
while (!feof($fp) and $fp)
{
 if ($i == $n) {$line = fgets($fp); break;}
 else {fgets($fp);}
 $i++;
}
fseek($fp,0);
echo $line;
> without mysql ofcorse
По религиозным причинам?
 
> Если же размер ряда нельзя унифицировать
можно завести файл, в котором будут лежать смещения рядов. Но всё это извращения и разумнее юзать СУБД.
 
SiMM
> можно завести файл, в котором будут лежать смещения рядов
Изврат.
> Но всё это извращения и разумнее юзать СУБД.
Несомненно.
 
white phoenix
Наверное пологаешь, что я до этого не додумался?
 
sakon
Я не пологаю ничего по этому поводу т.к. не знаю, но тех ссылок что ты дал явно недостаточно.
 
sakon
Не знаю умный ли тредстартер, но его вопрос на это явно не указывает. Предлогаю закончить оффтопить.
 
HOCOK
тему создал от нечего делать. ибо у всех хостеров (нормальных) есть муська. а файл свой можешь залить опять таки в таблицу бд. и зачем, если не знаешь англ. писать на нем что-то?
 
Сверху