Мы в Telegram
Добавить новость
103news.com
Работа
Ноябрь
2017

Независимый модуль импорта товаров в MySQL БД из xml файлов

0
Здравствуйте!

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

Кратко...
Необходимо создать независимый модуль импорта товаров в базу данных(БД) на сервер из xml файлов с веб-доступом в панель управления (желательно на PHP).

Сайт на узкоспециализированной CMS на основе SantaFox.
Текущая система на VPS - 3 ядра процессора, 3 Гб памяти, Linux Debian7-64, PHP 5.4, mysql 5,5 (php5.4 - требования CMS).
Файлы товаров магазинов обновляются каждый день и загружаются с удалённых серверов по постоянному адресу.
Самые крупные из них весят до 1.5 Гб, и несколько около 600-800 Мб, остальные в основном гораздо меньше. При обновление можно грузить, с помощью параметра даты, только изменённые товары с последнего обновления. Соответственно размер их будет поменьше.
Нужно из этих файлов вытягивать нужные товары и распределять их с привязкой к созданной категории по категории товара в файле и по части имени(по маске), а в уже имеющихся в БД товарах обновлять параметры, цену и наличие.
Текущий размер БД сайта колеблется около 1 Гб ( ~600k товаров)
Модуль будет независимым, со своим веб-доступом к панели управления и отдельным пользователем БД, так как CMS возможно будет переписана на новые версии PHP.
Работа модуля не должна максимально нагружать систему, сайт в это время должен быть доступен и иметь приемлемую скорость работы по запросам посетителей. Т.е. лучше разбивать крупные файлы на части и работать последовательно и не спешно с каждой частью (построчно) - память на скрипты php сейчас выделено 300M, время можно поставить любое. Но, наверное, лучше процессы заканчивать и начинать с каждого дроблёного файла или как-то так.
Модуль должен сохранять выбранные настройки и привязки и делать обновление автоматически в выбранное время запуска через cron на сервере. По плану будет раз в сутки ночью, когда наименьшее число посетителей.
---------------------------------
1. Необходимые страницы.
1.1. Страница входа (для упрощения можно запаролить средствами сервера, так как пользователь будет один).
1.2. Страница или вкладка с добавлением магазинов в редактируемые текстовые поля - название, id в системе, ссылка на xml файл, дата последнего обновления.
1.3. Страница или вкладка на каждый добавленный в п.1.1. магазин, с присвоением каждому свойству из xml файла магазина соответствующего поля в нашей БД.
1.4. Страница или вкладка с присвоением каждой нашей категории из БД (id из таблицы catalog_cats, а также всем его parent_id) категории из файла магазина. Общая для всех добавленных магазинов или отдельная для каждого, как будет удобнее или рациональнее. Также привязка к каждой категории части наименования товара, которые будут добавлены по маске, остальные пропущены.
1.5. Страница назначения времени обновления по cron (можно ограничится записью на сервере), кнопка обновления категорий магазинов, кнопка запуска обновления вручную, и краткий лог за последний раз.

2. Этапы импорта:
Первичная загрузка:
2.1. Проверка доступности файлов xml по адресам, загрузка в соответствующие папки, разбивка для последующего добавления\обновления.
2.2. Парсинг из загруженных файлов xml категорий и свойств товара магазина в отдельную таблицу в БД для последующего присвоения нашим на стр.1.3-1.4.
Обновление:
2.3. Добавление новых товаров в БД с учётом заранее присвоенной категории и фильтру по маскам наименования. Запись в связанную таблицу каждому инкрементальному id товара присвоенной категории(и всем родительским, если имеются) в п.1.4.
2.4. Обновление имеющихся по id('original_id' в БД) из файла в рамках одного магазина.
2.5. Смена статуса на 'нет в наличии'('available' = 0) у удалённых в файле товаров.
2.6 Смена при необходимости http на https у картинок.
2.7. Пересчёт товаров.
2.8. Импорт купонов.
2.9. Составление лога.
---------------------------------

В процессе участвует три связанные таблицы - в одной товары, в другой присвоение товара к категории, в третьей сами наши категории.
Админку можно сделать на любом современном фреймворке вроде bootstrap. Редактируемые поля, добавление нужных доп.полей через '+', выпадающие списки с раскрывающейся древовидной структурой (возможно с поиском), остальное стандартно.
Также хотелось бы, что бы код был снабжён краткими пояснительными комментариями по функциям и разделам.
В текущем коде, используется PDO для работы с БД.

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




Губернаторы России
Москва

Собянин открыл пешеходную галерею между станциями метро и МЦД-4 Кутузовская





Москва

Два дня, наполненных театром, музыкой, книгами и наукой, — в Парке Горького во 2-й раз прошел Московский детский фестиваль искусств «НЕБО»


Губернаторы России

103news.net – это самые свежие новости из регионов и со всего мира в прямом эфире 24 часа в сутки 7 дней в неделю на всех языках мира без цензуры и предвзятости редактора. Не новости делают нас, а мы – делаем новости. Наши новости опубликованы живыми людьми в формате онлайн. Вы всегда можете добавить свои новости сиюминутно – здесь и прочитать их тут же и – сейчас в России, в Украине и в мире по темам в режиме 24/7 ежесекундно. А теперь ещё - регионы, Крым, Москва и Россия.

Moscow.media
Москва

Собянин рассказал об итогах чемпионата «Абилимпикс»



103news.comмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "103 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. 103news.com — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

103news.com — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.

Музыкальные новости

Коммерсантъ

Отельеры вступают в Игры дружбы // Стоимость размещения в гостиницах растет




Спорт в России и мире

Алексей Смирнов – актер, которого, надеюсь, еще не забыли

Дмитрий Вязьмикин – тренер по индивидуальной подготовке молодежного футбола «Локо»

Баскетболисты из Лобни завоевали золото на турнире Moscow Open

В филиалах АО "Желдорреммаш" прошли мероприятия ко Дню защиты детей


Ролан Гаррос

Мирра Андреева впервые вышла в четвертьфинал турнира Большого шлема



Новости Крыма на Sevpoisk.ru


Авто

Дизельный, рамный, с блокировками. Новый внедорожник скоро появится в России



Частные объявления в Вашем городе, в Вашем регионе и в России