Владимир Шикльгрубер: поэтому для 1 млн строк нужно использовать базы данных, у которых доступ к случайной строке решен лучше, чем стандартная реализация, которая позволяет либо перейти на случайное количество байт (к примеру, можно проскочить 100000 байт, но ведь для этого нужно знать размер всех строк, неплохо было бы, если бы они все были одного размера), либо использовать SQL или noSQL решения.
Владимир Шикльгрубер: чат на файлах? о_О А трицератопсы там тоже есть? Тогда запускайте скрипт через CLI, у него не будет ограничения по времени исполнения. Или используйте цивильные grep, sed, awk.
Владимир Шикльгрубер: проблема в том, что подобный чат будет сильно тормозить уже на небольших количествах пользователей, и работа с файлами у PHP не сильно оптимальная, как вы уже поняли. Поэтому лучше либо поискать альтернативу чату на MySQL, либо заказать его.
Вы должны понимать, что файл - это, фактически, набор байтов, и узнать количество строк в нем можно только с помощью постепенного перелистывания всего файла. Обойти это достаточно проблемно, например, создавая индексный файл, в котором будут в бинарном виде записаны положения строк в байтах для другого файла, но это называется изобретение велосипедов, имя которым - базы данных.
Владимир Шикльгрубер: нет, зачем же. В таблице с сообщениями хранится столбец с id комнаты, названия комнат хранятся в отдельной таблице. Это называется нормализация и связь один-к-многим.
Валерий Рябошапко: ну это я понял. А как это демон будет чистить смс в бд лишние? Я просто не сильно понимаю как оставлять 20 последних записей каждого id комнаты. (везде я по всей таблице прохожу без where id)
trevoga_su: я использую postrage если использовать очистку с выборкой с таблицы в пару милионов строк то скорость прохода демона пара менут и загрузка озу под верх. А если я с бд беру пути к фалам и очищаю файлы то скорость на пару тысяч комнат около минуты и озу не загружает на пару десятков метров.
> я использую postrage если использовать очистку с выборкой с таблицы в пару милионов строк то скорость прохода демона пара менут и загрузка озу под верх.
Постгресс тормозит на 2 миллионах? Да не поверю. Индексы стоят?
trevoga_su: он не тормозит как для субд но тормозит по сравнению с файлами. Плюс озу нагружает неплохо. Постоянная нагрузка на него 20к запросов в минуту. А если я ещё милионную таблицу катать буду то .. Стати да. Решение найдено в файлах. Сегодня прост все файлы очищу и розберусь чего демон упал