пятница, 22 июля 2011 г.

Re: Nokogiri + 70Mb XML + 512RAM on Server

>Мне впринципе не так уж важно будет ли скрипт работать
>1 мин или 5 мин, главное что бы сайт работал.

Eсть такая вещь как delayed job  или background job - любой таск которой занимает много времени отправляем в бэкграунд. 
а еще есть такая классная вещь как: 
просто напишите 
spawn do 
  # some lenthy process
end
и все что внутри блока уйдет в бэкграунд как другой процесс.

2011/7/21 Igor Kasyanchuk <igorkasyanchuk@gmail.com>
Подскажите как можно сделать следущее, есть файлик 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



--

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "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

Комментариев нет:

Отправить комментарий