Парсинг yml больших объемов

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Парсинг yml больших объемов

Сообщение darlov »

Здравствуйте. Столкнулся с проблемой, произвожу парсинг yml больших объемов, в них имеются ссылки на фото, при парсинге загружаю этои фотки к себе на сервер и делаю ресайз. Как я понял, узкое место загрузка файлов. Т.к. Php однопоточный ЯП, все это происходит очень долго.
Как можно все это ускорить, в какую сторону посмотреть?
Последний раз редактировалось darlov 2016.01.13, 13:57, всего редактировалось 1 раз.
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Пасинг yml больших объемов

Сообщение zabachok »

Больших объемов - это сколько? У меня несколько фидов по 20тысяч, они прекрасно засасываются по ночам.
2b||!2b Just read the instructions
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Пасинг yml больших объемов

Сообщение darlov »

zabachok писал(а):Больших объемов - это сколько? У меня несколько фидов по 20тысяч, они прекрасно засасываются по ночам.
бывает и по 50 тысяч. Причем у одно товара может быть по 5 картинок.
Можно ли одновременно закачивать к примеру с одного товара сразу 5 картинок?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Парсинг yml больших объемов

Сообщение zabachok »

Я думаю, что нет в этом необходимости. Фотки товаров очень редко меняются, они только добавляются к новым товарам. Один раз закачать и потом закачивать только дифф.
2b||!2b Just read the instructions
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Парсинг yml больших объемов

Сообщение darlov »

zabachok писал(а):Я думаю, что нет в этом необходимости. Фотки товаров очень редко меняются, они только добавляются к новым товарам. Один раз закачать и потом закачивать только дифф.
Тут именно речь идет, чтоб все товары по новому загружаются...
Есть ли какое нибудь решение?
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Парсинг yml больших объемов

Сообщение darlov »

Может для php особых решений нет и необходимо сам парсинг вынести в другой ЯП?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Парсинг yml больших объемов

Сообщение zelenin »

скачай для начала yml, потом картинки, потом обработай их. Например на go - язык достаточно простой и быстрый.
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Парсинг yml больших объемов

Сообщение darlov »

zelenin писал(а):скачай для начала yml, потом картинки, потом обработай их. Например на go - язык достаточно простой и быстрый.
Как раз смотрю сейчас в сторону Go
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Парсинг yml больших объемов

Сообщение zabachok »

darlov писал(а):Тут именно речь идет, чтоб все товары по новому загружаются...
Надо так надо. Но зачем каждый раз засасывать картинки заново заливать, если они уже есть?
2b||!2b Just read the instructions
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Парсинг yml больших объемов

Сообщение darlov »

zabachok писал(а):
darlov писал(а):Тут именно речь идет, чтоб все товары по новому загружаются...
Надо так надо. Но зачем каждый раз засасывать картинки заново заливать, если они уже есть?
Вы не правильно поняли, я имею ввиду все товары новые и картинки тоже.
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

Re: Парсинг yml больших объемов

Сообщение zabachok »

Ну они же один раз новые. Один раз можно подождать.
2b||!2b Just read the instructions
vladikamira
Сообщения: 92
Зарегистрирован: 2013.01.11, 23:13

Re: Парсинг yml больших объемов

Сообщение vladikamira »

форкай\используй потоки на php, если не знаешь как могу подсказать, но php создан что бы умереть, так что я бы на твоем месте не извращался , а сделал бы парсер побырому на питоне или на другом подходящие под данные нужды ЯП, хотя наверное запили бы велик на php и посмотрел бы что бы получилось =)
Аватара пользователя
darlov
Сообщения: 204
Зарегистрирован: 2012.01.31, 16:09

Re: Парсинг yml больших объемов

Сообщение darlov »

vladikamira писал(а):форкай\используй потоки на php, если не знаешь как могу подсказать, но php создан что бы умереть, так что я бы на твоем месте не извращался , а сделал бы парсер побырому на питоне или на другом подходящие под данные нужды ЯП, хотя наверное запили бы велик на php и посмотрел бы что бы получилось =)
Я запилил велик на php, долго очень идет. Тут нужна многопоточность, а в php этого нет, сейчас пытаюсь запилить на golang
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Парсинг yml больших объемов

Сообщение S c »

На питоне это пишется молниеносно быстро. Я вообще не знаю питона через пару часов после прочтение базового синтаксиса + документации по грабберу уже парсеры писал. Многопоточность и тд - все сразу доступно. И работает, конечно, шустро все. Хотя и есть опыт написание парсеров на php, которые по 7-10 часов работали каждый.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Парсинг yml больших объемов

Сообщение zelenin »

S c писал(а):На питоне это пишется молниеносно быстро. Я вообще не знаю питона через пару часов после прочтение базового синтаксиса + документации по грабберу уже парсеры писал. Многопоточность и тд - все сразу доступно. И работает, конечно, шустро все. Хотя и есть опыт написание парсеров на php, которые по 7-10 часов работали каждый.
лапшу небось написал, за два часа-то?)
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Парсинг yml больших объемов

Сообщение S c »

zelenin писал(а):
S c писал(а):На питоне это пишется молниеносно быстро. Я вообще не знаю питона через пару часов после прочтение базового синтаксиса + документации по грабберу уже парсеры писал. Многопоточность и тд - все сразу доступно. И работает, конечно, шустро все. Хотя и есть опыт написание парсеров на php, которые по 7-10 часов работали каждый.
лапшу небось написал, за два часа-то?)
ну, слукавил пожалуй) Пару часов на базовый синтаксис - это да. А сразу вместе с ознакомлением с библиотекой для парсинга начал писать парсеры. Парсили очень много данных с разных крупных проектов. Там на самом деле настолько все просто оказалось, порог вхождения вообще нулевой, синтаксис - минимальный, этим мне питон жутко понравился на тот момент.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Парсинг yml больших объемов

Сообщение zelenin »

S c писал(а):
zelenin писал(а):
S c писал(а):На питоне это пишется молниеносно быстро. Я вообще не знаю питона через пару часов после прочтение базового синтаксиса + документации по грабберу уже парсеры писал. Многопоточность и тд - все сразу доступно. И работает, конечно, шустро все. Хотя и есть опыт написание парсеров на php, которые по 7-10 часов работали каждый.
лапшу небось написал, за два часа-то?)
ну, слукавил пожалуй) Пару часов на базовый синтаксис - это да. А сразу вместе с ознакомлением с библиотекой для парсинга начал писать парсеры. Парсили очень много данных с разных крупных проектов. Там на самом деле настолько все просто оказалось, порог вхождения вообще нулевой, синтаксис - минимальный, этим мне питон жутко понравился на тот момент.
написал за 3 часа утилиту на go (кстати, с той же многопоточностью из коробки) с конфигурированием из вне, используя ООП, прочитав за пару часов 10 глав книги уровня "для чайника".
после какого-то момента синтаксис всех языков становится одинаковым. ищешь только как проспособить отлаженные паттерны.
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Парсинг yml больших объемов

Сообщение S c »

zelenin писал(а):
S c писал(а):
zelenin писал(а): лапшу небось написал, за два часа-то?)
ну, слукавил пожалуй) Пару часов на базовый синтаксис - это да. А сразу вместе с ознакомлением с библиотекой для парсинга начал писать парсеры. Парсили очень много данных с разных крупных проектов. Там на самом деле настолько все просто оказалось, порог вхождения вообще нулевой, синтаксис - минимальный, этим мне питон жутко понравился на тот момент.
написал за 3 часа утилиту на go (кстати, с той же многопоточностью из коробки) с конфигурированием из вне, используя ООП, прочитав за пару часов 10 глав книги уровня "для чайника".
после какого-то момента синтаксис всех языков становится одинаковым. ищешь только как проспособить отлаженные паттерны.
Согласен. Я описал такую же ситуацию. На тот момент когда нужны были парсеры - о go я не слышал (не знаю, был ли он тогда вообще). Я ни в коем случае не хочу ничего плохого о go сказать, просто поделился "опытом", как можно поступить.
Вопрос - go сравнительно молодой язык - на питоне много устоявшихся, проверенных временем готовых библиотек, насколько go может похвастаться подобной надежностью.
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Парсинг yml больших объемов

Сообщение rugabarbo »

Не стоит забывать, как влияет на стоимость поддержки добавление нового языка. Если есть возможность, лучше на выделенном сервере решать задачу силами PHP. Аренда отдельной машины обходится дешевле, чем поиск и содеражание сишников, питонщиков и т.п.
Ответить