Доброе время суток. Имеем большой файл(4ГБ и более). Файл со строками может быть ОЧЕНЬ большого размера (в т.ч. 2-3-4+ Гб), т.е. он ТОЧНО не поместится в оперативную память. Важно: мы не знаем заранее, сколько памяти будет доступно PHP на машине, на которой будет выполняться наш скрипт. Результатом работы должен быть файл, содержащий строки исходного файла, отсортированные по алфавиту. Подскажите в каком направлении двигаться и как вообще решаются такие задачи? Как я понял из условия,надо основной файл резать на под файлы и обрабатывать .т к мы ограничены операт. памятью. Сортировать их и потом уже как -то собирать обратно ??
Записать всё что начинается на А в один файл, на Б в другой и т.д. Затем сделать внутреннюю сортировку у каждого полученного файла и склеить. Если всё равно не будет хватать памяти, то можно сделать ещё больше файлов, например, АА, АБ ... БА, ББ ...
Я где-то слышал, что базы данных придумали как раз вот для таких случаев. Чтобы не ворочать и парсить 4-гиговые файлы руками. Попробуйте, может понравится.
какой тип данных в файле? если xml, то вам необходимо копать в сторону http://xmlhack.ru/texts/06/stx/stx.html если другой формат, то данные явно как то должны разграничиваться. в свое время, когда не знал о существовании первого варианта, я сделал свой парсер: 1. брал текст блоками 2. парсил конечный блок 3. брал следующий блок текста Добавлено спустя 1 минуту 1 секунду: забыл. не нужно грузить блоки размером с доступную память. достаточно по 4-10 кб данных. по скорости даже быстрее.
Спасибо за Ваши ответы. БД использовать было нельзя,а вообще надо было сделать как предложил Amian. Жаль что не успел((