parser that reads from a string or IO object as it feels necessary
On 22 июл, 12:00, Igor Kasyanchuk <igorkasyanc...@gmail.com> wrote:
> спасибо за ответы
>
> вобщем я попробовал sax-machine, оно все вроде нормально,
> действительно удобно ведь достает все по атрибутам и тд, но большой
> файл все-таки ложит сервер, памяти сразу съедает 200 метров (все висло
> на этой строчке full_forecast =
> Fullforecast.parse(File.open("#{FILE_NAME}.xml")) ---- может файл надо
> открывать как-то по другому?
>
> сделал по другому - вместо одного большого файла я достаю даные
> конкретно по каждому объекту. работает очень быстро. вроде как не
> сильно оптимально, но мне действительно нужно было 400 записей из 70мб
> (сколько там записей даже не знаю, может и 10_000)
>
> On Jul 21, 10:49 am, "nemi...@gmail.com" <nemi...@gmail.com> wrote:
>
> > Приветствую!
>
> > Классически при работе с XML есть 2 пути: dom и sax
>
> > Первый вариант подразумевает, что весь файл будет обработан и будет
> > построено "дерево" узлов.
>
> > Второй вариант - событийный, то есть xml выступает в качестве потока,
> > который проходит через парсер - и при возникновении событий -
> > срабатываются обработчики установленные разработчиком. Весь файл не
> > подгружается в этом случае.
>
> > Может быть вам попробовать переписать логику на SAX?
>
> >http://nokogiri.org/Nokogiri/XML/SAX.html
>
> > Есть ещё такой пример:http://www.pauldix.net/2009/01/sax-machine-sax-parsing-made-easy.html
> > используетсяhttps://github.com/pauldix/sax-machine
> > (так же на базе Nokogiri)
>
> > С уважением,
> > Илья
>
> > On Jul 21, 1:31 pm, Igor Kasyanchuk <igorkasyanc...@gmail.com> wrote:
>
> > > Подскажите как можно сделать следущее, есть файлик 70Мб (ХМЛ), и надо
> > > его парсить и писать даные в базу (удаляя старые, ну или можно
> > > обновлять, не знаю что быстрее будет). Но вот когда начинается процес
> > > обработки xml сервер глохнет намертво, смотрю px aux а процес занял
> > > 54% памяти, и сам сайт уже не отвечает. Скажите если ли другие решения
> > > такой проблемы? Мне впринципе не так уж важно будет ли скрипт работать
> > > 1 мин или 5 мин, главное что бы сайт работал. Спасибо
>
> > > doc = Nokogiri::XML(File.read("#{FILE_NAME}.xml"))
>
> > > doc.xpath("//forecast").each do |forecast|
> > > city_id = forecast.attributes["city"]
>
> > > next unless city_id
>
> > > city_id = city_id.to_s.to_i
>
> > > city = City.find_by_weather_city_id(city_id)
>
> > > next unless city
> > > city.weathers.except_today.delete_all
>
>
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
Комментариев нет:
Отправить комментарий