[ Сообщений: 37 ] 
Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 10 сен 2012, 21:58 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Приветствую!

Нужен XML парсер товаров миксмаркета. Скрипт на ПХП не предлагать - будет работать долго (долго это более 15 минут). Скрипт, который будет удалять товары полностью из базы и записывать по новой - тоже не надо.

На данный момент мы работаем с MySQL + сфинкс. Насколько я знаю, то для того чтобы постоянно не удалять товары из базы, а только обновлять цену и наличие, можно писать сразу в индекс сфинкса. Так как самим писать сейчас скрипт нет времени - готов купить/заказать у знающих людей.

Всем заранее спасибо!

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 сен 2012, 00:10 
Эксперт
Аватара пользователя

Сообщения: 276
Поблагодарили: 16 раз.
Цитата:
Скрипт на ПХП не предлагать - будет работать долго (долго это более 15 минут)

С чего это? Основные тормоза бывают из-за манипуляций с базой, и возможно еще из-за операций группировки товаров, если они есть.

_________________
видеорецепты

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2012, 01:39 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Да разумеется, этот момент тоже нужно учитывать и еще момент работы скорости диска...

Но на данный момент у нас структура проста:

1. таблица товаров с описанием и моделью (к сожалению рекламодатели в моделях часто пишут такое, что волосы дыбом встают - в результате чего в отдельную таблицу мы эти данные не выносим сейчас. К примеру "Синий мобильный телефон Nokia x6" - супер модель :))))
2. Таблица марок

Вот следовательно нужен скрипт который быстро будет парсить и записывать в базу, либо может не так быстро парсить в темповую таблицу а потом смотреть какие товары нужно обновить в основной базе, а какие удалить.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2012, 09:12 
Эксперт
Аватара пользователя

Сообщения: 235
Поблагодарили: 17 раз.
Вся база товаров Миксмаркета заливается примерно за 1-2 минуты на серверах средней мощности.

Рецепт:
1) Парсим с помощью PHP + SimpleXML
2) Результат записываем во внешний текстовый файл на диске (тем самым не грузим MySql)
3) Текстовый файл вливаем на бешеных скоростях в БД с помощью LOAD DATA INFILE, предварительно отключив индексы с помощью ALTER TABLE имя_таблицы DISABLE KEYS, а потом включив их ALTER TABLE имя_таблицы ENABLE KEYS

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2012, 12:28 
Эксперт
Аватара пользователя

Сообщения: 276
Поблагодарили: 16 раз.
vitocool2 очень грамотное решение и ценный совет

_________________
видеорецепты

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 сен 2012, 21:19 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
приветствую!

Спасибо большое за действительно дельный совет!

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2012, 00:39 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Приветствую "vitocool2"!

А не поделитесь информацией каким образом Вы создаете диапазон цен у товарной карточки/карточках в результатах поиска или каталоге!?

Если подробнее то:

1. Есть своя, большая база товарных карточек

2. В систему загружаем прайс-лист миксмаркета и других. В общем загружаем прайсы, где как мы уже с Вами обсуждали, марка и модель зачастую указаны криво.

3. Когда человек из каталога товарных карточек заходит в товар, то осуществляется поиск цен по загруженным прайсам (ну тут все понятно - просто запрос по марке и модели)

Теперь вопрос: как сделать диапазон цен еще в каталоге на товарные карточки. Ну вот скажем пример: http://catalog.onliner.by/mobile/

Если делать приравнивание в момент загрузки-паршенья прайса - то это пипец сколько запросов будет...

Заранее спасибо!

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2012, 08:04 
Эксперт
Аватара пользователя

Сообщения: 235
Поблагодарили: 17 раз.
ptutkin, для вывода диапазона цен в каталоге и результатах поиска я использую две дополнительные таблицы:

1) Таблица "A" c полями id_mag (ID магазина) и geo_code(геокод магазина). Не забываем, у нас же геозависимая выдача, значит диапазон цен зависит от региона.
2) Таблица "B" с полями id_mag (ID магазина), code_product (ID товара для этого магазина), productID (ID карточки товара).

Имея такие таблички не сложно выводить необходимую информацию по позициям. Вот так это выглядит у меня.

Вся сложность в том, чтобы заполнить таблицу "B". Для этого периодически нужно прогонять все карточки товаров для определения их связей с товарными позициями магазинов по бренду и модели, но это не так уж страшно.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2012, 08:16 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Доброе утро!

Спасибо за предложенный вариант! Но я вижу 2 проблемы, если стремиться к идеалу :))

1. В Вашем варианте Вы исходите из того, что ИД товаров в прайсах рекламодателей не меняются (хотя может так оно и есть или они меняются редко) - но что делать с магазинами которые в своих ХМЛ не передают свой внутренний ИД?

2. У меня в базе порядка миллиона товарных карточек и прогонять их будет достаточно долго наверное.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2012, 08:52 
Эксперт
Аватара пользователя

Сообщения: 235
Поблагодарили: 17 раз.
Доброе утро)

Даже если ID меняются - это не страшно, ведь таблица "B" периодически обновляется. Магазинов не передающих ID у меня один из 500, и тот не от Миксмаркета )))) (но опять же это не проблема, потому как ID в таких случаях можно формировать автоматически счётчиком).

Идея таблицы "B" сводится к тому, чтобы снизить нагрузку на ваш сервер, если есть потребность в выводе диапазонов цен, кол-ва предложений в магазинах и т.д. в каталоге. Можно обходится и без неё. Для этого просто используем запрос к БД для каждой отдельной позиции каталога, в котором определяем min и max цену для текущего региона по бренду и модели (именно так у меня и было первоначально).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2012, 00:01 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Добрый вечер!

Хотелось бы вернуться к вашему рецепту по парсингу XML:

Цитата:
Вся база товаров Миксмаркета заливается примерно за 1-2 минуты на серверах средней мощности.
Рецепт:
1) Парсим с помощью PHP + SimpleXML
2) Результат записываем во внешний текстовый файл на диске (тем самым не грузим MySql)
3) Текстовый файл вливаем на бешеных скоростях в БД с помощью LOAD DATA INFILE, предварительно отключив индексы с помощью ALTER TABLE имя_таблицы DISABLE KEYS, а потом включив их ALTER TABLE имя_таблицы ENABLE KEYS

Дело в том, что был написан скрипт как раз используя PHP + SimpleXML. И парсинг работал относительно нормально. Но тогда файл XML товаров был около 800 Мб.. Сейчас он уже 1,3 Гб и не хватает ресурсов для его парсинга.
Может Вы сталкивались с данной проблемой? Еще хотелось бы узнать, например, сколько у вас выделяется памяти для этого скрипта? И что вы подразумеваете под "средней мощностью серверов"?

вот наш сервак

CPU AMD Opteron 3280 Octacore
Barebone Fujitsu PRIMERGY MX130 S2
RAM 16x Gigabyte RAM

мы под этот парсинг можем использовать 10-12 гигов.

Заранее спасибо.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2012, 10:16 
Эксперт
Аватара пользователя

Сообщения: 235
Поблагодарили: 17 раз.
ptutkin, есть выход из вашей ситуации, парсите прайс не целиком, а по отдельным магазинам. Список магазов с прайсами: http://mixmarket.biz/ownshop3/10008/&fid=1
Теоретически, общий файл XML товаров будет постоянно увеличиваться.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2012, 12:08 
Аватара пользователя

Сообщения: 30
Поблагодарили: 3 раз.
Приветствую!

Да, над этим мы думали... А вариантов где парсится один большой файл в разумное время Вы не знаете?

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2012, 14:25 
Эксперт
Аватара пользователя

Сообщения: 276
Поблагодарили: 16 раз.
Была такая проблема, в итоге пришлось отказаться от simplexml. Связано с тем, что simplexml загружает полностью всю структуру документа в оперативную память, и расход памяти получается в разы больше, чем сам xml документ.
Увы, этот класс не приспособлен к большим файлам. Можно качать прайсы отдельно для каждого документа, но следует иметь в виду, что у больших гипермаркетов много товаров и большие xml.
А можно забить на simplexml и посмотреть в сторону XMLReader, который очень экономичен с точки зрения расхода памяти, и вместе с тем быстр.

_________________
видеорецепты

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 дек 2012, 14:31 
Эксперт
Аватара пользователя

Сообщения: 235
Поблагодарили: 17 раз.
Почитал мануал насчёт XMLReader, звучит не плохо. Думаю, можно его попробовать на практике.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 [ Сообщений: 37 ] 

   Похожие темы   Ответы   Автор   Просмотры   Последнее сообщение 
В этой теме нет новых непрочитанных сообщений. Надпись "реклама" над блоками товаров

[ На страницу: 1, 2 ]

в форуме Микс-Товары

17

mariaonline

12464

31 окт 2014, 08:50

Odaria Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Не могу настроить блок "Контекстных товаров" (2448

в форуме Микс-Товары

6

moreinfo

12202

01 мар 2010, 13:40

mager Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Нужны более гибкие настройки шаблонов «Контекстных товаров»

в форуме Микс-Товары

3

BOOTKiller

11722

12 май 2006, 15:42

ivanov Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Обновлен способ вывода денег из Микс-Товаров

в форуме Миксмаркет в развитии

10

ivanov

17805

08 июл 2008, 19:55

ivanov Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Яндекс.Маркет сделал API для доступа к карточкам товаров

в форуме Микс-Товары

8

mgarkunov

17450

30 май 2012, 14:00

Евгений Перейти к последнему сообщению



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
cron


О проекте Новости Пресса о нас Сотрудничество Вакансии Контакты
2005–2011 Партнерская сеть Миксмаркет
Разработка сайта — iji-design / AdLabs
Powered by phpBB Group