- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть две таблицы в базе данных в одной хранится информация о каждом товаре:
1я `prods_wh` (ид и номера складов и др. данные): id, imei, tmp_id, wh_id...
2я `prods` (вся информация о товаре, общее количество товара на каждом складе, цены, х-ки и т.д): id, imei, wh1_count, wh1_cost, wh2_count, wh2_cost ... ...
т.е. В одной базе (`prods_wh`) лежат все товары, одна строка в ней = один товар (1шт) = один уникальный imei, но tmp_id - у всех одинаковый; В другой базе (`prods`) один товар = один tmp_id, но есть поля wh1_count, wh2_count ... которые соответствуют номеру склада на котором находится товар, т.е wh1_count = количеству строк в таблице `prods_wh` где wh_id = 1 и tmp_id=нужный ид.... соответственно wh2_count = колву строк с wh_id = 2.......
Когда делается импорт товаров в базу (например 20000 товаров), сначала из полученного массива формируем два больших запроса с нужными данными к двум таблицам типа:
Теперь как обе таблицы заполнены, нужно проставить количество товаров на складах, т.е. нужно циклом бежать по таблице `prods_wh` выбирать товары с конкретным tmp_id и считать количество по каждому wh_id и делать соответственный UPDATE запрос таблицы `prods`.... Таких вот запросов будет очень много и это нагрузит сервак.
Было бы хорошо если б как то реализовать подсчет конкретного товара при сборке первого запроса, чтоб не делать повторных INSERT'ов как то запоминать что этот товар (с таким tmp_id) уже будет добавлен, и в случае если он еще раз встречается, делать +1 как конкретному wh[wh_id]_count...
У меня есть вариант, сразу делать много запросов при разборе исходных данных на каждой итерации при переборе смотреть есть ли уже такой товар или нет, и делать действия, но тогда получается чтобы залить один товар, нужно сделать:
- INSERT INTO `prods_wh` .........
- SELECT COUNT FROM `prods` WHERE tmp_id = xxxx
Если результат > 0, то:
- $wh1 = SELECT COUNT FROM `prods_wh` WHERE tmp_id = xxxx AND wh_id=1
- $wh2 = SELECT COUNT FROM `prods_wh` WHERE tmp_id = xxxx AND wh_id=2
- UPDATE `prods` WHERE tmp_id = xxxx SET wh1_count = $wh1, wh2_count = $wh2
Если результат = 0, то:
- INSERT INTO `prods` SET wh[$wh_id]_count = 1
Получаем на каждой итерации минимум 3 запроса, максимум 5. Итого при импорте в базу 20000 товаров, в худшем случае нужно сделать 100000 запросов, это убъет сервак.
Посоветуйте как мне правильно разрулить ситуацию.
Заранее благодарен за внимание)
сначала из полученного массива формируем два больших запроса с нужными данными к двум таблицам типа:
Только при этом не забывайте что еще есть такая вещь как max_allowed_packet
Теперь как обе таблицы заполнены, нужно проставить количество товаров на складах, т.е. нужно циклом бежать по таблице `prods_wh` выбирать товары с конкретным tmp_id и считать количество по каждому wh_id и делать соответственный UPDATE запрос таблицы `prods`.... Таких вот запросов будет очень много и это нагрузит сервак.
Мне пока трудно понять что вам там нужно, но mysql поддерживает апдейт с связанными таблицами JOIN'ы.
в худшем случае нужно сделать 100000 запросов, это убъет сервак.
С чего бы это его убьет? Или у вас ограничение на лимитов запросов в час? Делайте циклами