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

HOCOK

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

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

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

???
 

white phoenix

Новичок
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

Новичок
SiMM
> можно завести файл, в котором будут лежать смещения рядов
Изврат.
> Но всё это извращения и разумнее юзать СУБД.
Несомненно.
 

sakon

П..и.н..ок
white phoenix
Наверное пологаешь, что я до этого не додумался?
 

white phoenix

Новичок
sakon
Я не пологаю ничего по этому поводу т.к. не знаю, но тех ссылок что ты дал явно недостаточно.
 

white phoenix

Новичок
sakon
Не знаю умный ли тредстартер, но его вопрос на это явно не указывает. Предлогаю закончить оффтопить.
 

master_x

Pitavale XXI wieku
HOCOK
тему создал от нечего делать. ибо у всех хостеров (нормальных) есть муська. а файл свой можешь залить опять таки в таблицу бд. и зачем, если не знаешь англ. писать на нем что-то?
 
Сверху