[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как парсить большие файлы
SoMeOnE
На сервере есть файл. Он обновляется каждую минуту. (расписание самолетов)
Нужно его парсить с php и записывать в базу.
Простой текстовый. значения разделяются знаком #

Файлы большие. По пол гигабайта. Как правильней парсить такие фалы правильно и без повторов.

Даже если я их приму и просто по знаку # разобью по массивам. Как мне избегать повторов. Файл очищать просто?

Понятно, то что крон поставлю. Интерсует именно как правильней работать с таким объемом информации
sergeiss
Цитата (SoMeOnE @ 26.08.2013 - 00:24)
На сервере есть файл. Он обновляется каждую минуту. (расписание самолетов)

Вот здесь поподробнее! Кто создает этот файл, есть ли у тебя возможность удалят/переименовывать этот файл, что будет делать прога, пишущая данные, если файл отсутствует.

Если у тебя есть полный доступ к файлу и если прога, пишущаяе в него данные,будет создавать его опять при его отсутствии, то алгоритм просто "просится": переименовываешь файл, работаешь спокойно с его данными. По окончании обработки удаляешь переименованный файл. Если в это время происходит обновление, то файл будет просто создан заново. И потом ты возьмешь его, переименуешь и т.д. по циклу.

Если же у тебя нет полного доступа к файлу или по другим причинам ты не можешь его модифицировать, то тогда придется использовать функции fopen/fseek для открывания файла и перехода к точке, где были прочитаны предыдущие данные. Опять же, перед открыванием файла можно проверить его размер и дату, чтобы лишний раз не дёргать, когда новых данных нет. Естественно, где-то надо хранить данные о последнем месте чтения, дате, размере.

Насчет дублирования... Я бы возложил всё это на БД. Там есть уже готовые механизмы борьбы с дублированием, так что зачем что-то изобретать?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
SoMeOnE
Да, я неверно понял задачу. На сервере уже был скрипт который принимает порциями данные. И записыват их в файл. Данные поступают каждую минуту. Из за этого файлы больших размеров. А мне нужно сразу в бд записывать, напрямую.
Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.