Оставьте сообщение в этой теме и вам откроются контакты пользователя
1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png).
-Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png).
- Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3).
- Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория).
Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png). -Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png). - Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3). - Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория). Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png). -Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
надублить могло потому что в действии привязка на поиск по артикулу по настройке "Уникальность артикулов" - в таком случае карточки создавало бы уникально по связке артикул+бренд, а на деле - по артикулу из-за выключенной настройки не ищет
либо вам нужно включать настройку, либо менять логику в действии и искать по артикулу товары - это +1ч если дорабатывать в виде настройки так же я вижу что у вас происходит поиск по ид из базы данных, который пишется во внешний ид - собственно это вполне вероятно нужно дорабатывать настройку чтобы выключать поиск по внешнему ид - чтобы искало исключительно по артикулу и после проверяло соответствие бренда - это +1ч в виде настройки
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png). - Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3). - Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
в виде настроек - 2ч
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория). Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
в виде настройки - 2ч
[quote]
1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png).
-Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
[/quote]
надублить могло потому что в действии привязка на поиск по артикулу по настройке "Уникальность артикулов" - в таком случае карточки создавало бы уникально по связке артикул+бренд, а на деле - по артикулу из-за выключенной настройки не ищет
либо вам нужно включать настройку, либо менять логику в действии и искать по артикулу товары - это +1ч если дорабатывать в виде настройки
так же я вижу что у вас происходит поиск по ид из базы данных, который пишется во внешний ид - собственно это вполне вероятно нужно дорабатывать настройку чтобы выключать поиск по внешнему ид - чтобы искало исключительно по артикулу и после проверяло соответствие бренда - это +1ч в виде настройки
[quote]
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png).
- Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3).
- Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
[/quote]
в виде настроек - 2ч
[quote]
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория).
Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
[/quote]
в виде настройки - 2ч
Оставьте сообщение в этой теме и вам откроются контакты пользователя
Добрый день. 1) Проверил настройку "Уникальность артикулов" - она контролирует только поле Артикул (не связку артикул+бренд) и не позволяет создавать товары с одинаковым артикулом но разными брендами, что мне не подходит. По этому ок - дорабатываем. 2) ок 3) ок
Жду счёт на оплату.
Добрый день.
1) Проверил настройку "Уникальность артикулов" - она контролирует только поле Артикул (не связку артикул+бренд) и не позволяет создавать товары с одинаковым артикулом но разными брендами, что мне не подходит.
По этому ок - дорабатываем.
2) ок
3) ок
Жду счёт на оплату.
Александр писал/а: 1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png). -Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
Доработаны настройки: "Игнорировать уникальность артикулов в системе и создавать продукты по связке артикула и бренда" "Исключить поиск продукта по внешнему ID"
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png). - Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3). - Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
Доработаны настройки: "Исключить импорт категорий 2-го уровня" "Исключить импорт категорий с признаком visible=0"
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория). Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
Доработаны настройки: "Импортировать дополнительные категории продукта" "Удалить не импортированные дополнительные категории"
[quote]
Александр писал/а:
1. После импорта продукта с несколькими поставщиками (Источник импорта.png), через приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), в OneBox OS создаются дублирующиеся/идентичные карточки этого продукта, в каждой из которых разный поставщик (Дубли.png).
-Нужно что бы при импорте в OneBox OS создавалась только одна уникальная (связка Артикул-Бренд) карточка продукта, со всеми поставщиками этого продукта(Групировка поставщиков по продукту.png).
[/quote]
Доработаны настройки:
"Игнорировать уникальность артикулов в системе и создавать продукты по связке артикула и бренда"
"Исключить поиск продукта по внешнему ID"
[quote]
2.Приложение «CMS ExtraParts» (box_auto_action_extraparts_import_products.php) на основании уровней (price_group.level) и признака родительской категории (price_group.id_parent), а всего в CMS 4 уровня (Категории.png), импортирует и строит дерево категорий в OneBox OS (Категории в Box OS.png).
- Нужно Исключить импорт категорий 2-го уровня, что бы дерево категорий в OneBox OS строилось без групп 2-го уровня(они никогда не несут в себе продуктов). Тоесть родителем (id_parent) групп 1-го уровня (level = 1) должны быть группы 3-го уровня (level = 3).
- Категории с признаком price_group.visible=0 исключить из импорта в OneBox OS (Категории.png).
[/quote]
Доработаны настройки:
"Исключить импорт категорий 2-го уровня"
"Исключить импорт категорий с признаком visible=0"
[quote]
3. Во время импорта продуктов (box_auto_action_extraparts_import_products.php), принадлежность продукта к категории берется из price.id_price_group (главная категория).
Но так как продукт может одновременно принадлежать нескольким категориям(Дополнительные категории продукта.png), нужно добавить импорт значений: price.id_price_group1, price.id_price_group2, price.id_price_group3, price.id_price_group4 в Дополнительные категории продукта (OneBox OS).
[/quote]
Доработаны настройки:
"Импортировать дополнительные категории продукта"
"Удалить не импортированные дополнительные категории"
Оставьте сообщение в этой теме и вам откроются контакты пользователя
1.1. Импортируются не все товары, поставщики (источник импорта пропущенные.png) 1.2. Во время ипорта импортируются не все данные опоставщика (поставщики.png)
Обратите внимание на время price.post_date пропущенных. -видно что сбой происходит, когда в источнике (price) появляется много обновленных данных.
Алгоритм обновления данных в источнике ( таблица price) происходит следующим образом: Перед вставкой масива данных с ключом id_provider, по этому же ключу в таблице price обнуляются поля price и stock. С добавлением/обновлением данных в price, так же обновляется поле post_date, что стартует box_auto_action_extraparts_import_products.php у которого есть всего 2 мин. ($postDateFrom = DateTime_Object::Now()->addMinute(-2)->setFormat('Y-m-d H:i:s')->__toString();). Выборка (Выборка.png) показывает обем обновленных (969981) строк в диапазоне 05:47:11 - 05:58:44. Обновление в источнике по ключу id_provider происходит 1-2 раза в сутки. Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске. Может увеличить количество минут в $postDateFrom?
1.1. Импортируются не все товары, поставщики (источник импорта пропущенные.png)
1.2. Во время ипорта импортируются не все данные опоставщика (поставщики.png)
Обратите внимание на время price.post_date пропущенных.
-видно что сбой происходит, когда в источнике (price) появляется много обновленных данных.
Алгоритм обновления данных в источнике ( таблица price) происходит следующим образом:
Перед вставкой масива данных с ключом id_provider, по этому же ключу в таблице price обнуляются поля price и stock.
С добавлением/обновлением данных в price, так же обновляется поле post_date, что стартует box_auto_action_extraparts_import_products.php у которого есть всего 2 мин. ($postDateFrom = DateTime_Object::Now()->addMinute(-2)->setFormat('Y-m-d H:i:s')->__toString();).
Выборка (Выборка.png) показывает обем обновленных (969981) строк в диапазоне 05:47:11 - 05:58:44.
Обновление в источнике по ключу id_provider происходит 1-2 раза в сутки.
Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске.
Может увеличить количество минут в $postDateFrom?
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Александр писал/а: Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске. Может увеличить количество минут в $postDateFrom?
В теории можем вынести это в настройку с значением по умолчанию = 2 Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
[quote]
Александр писал/а:
Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске.
Может увеличить количество минут в $postDateFrom?
[/quote]
В теории можем вынести это в настройку с значением по умолчанию = 2
Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
Оставьте сообщение в этой теме и вам откроются контакты пользователя
[/quote] Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание? [/quote]
Проблему я описал выше. По поводу $postDateFrom - это всего лишь мое видение решения, но я в нем не у верен, хотел бы услышать мнение, вариант от разработчика.
- Если мои выводы верны, то могу попробовать изменить значение 2 на другое, протестировать на деле, а по результатам решим что делать дальше.
[/quote]
Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
[/quote]
Проблему я описал выше.
По поводу $postDateFrom - это всего лишь мое видение решения, но я в нем не у верен, хотел бы услышать мнение, вариант от разработчика.
- Если мои выводы верны, то могу попробовать изменить значение 2 на другое, протестировать на деле, а по результатам решим что делать дальше.
Оставьте сообщение в этой теме и вам откроются контакты пользователя
Тындык Максим Вадимович OneBox production писал/а:
Александр писал/а: Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске. Может увеличить количество минут в $postDateFrom?
В теории можем вынести это в настройку с значением по умолчанию = 2 Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
Да, тест с $postDateFrom показал удовлетворительный результат - можно вынести это в настройку с значением по умолчанию = 2.
По третему пункту ТЗ: 1. Не импортируются дополнительные категории продукта (Дополнительные категории не отображает.png) 2. В категориях перестали отображаться привязанные продукты. (Дополнительные категории не отображает.png)
[quote]
Тындык Максим Вадимович
OneBox production писал/а:
[quote]
Александр писал/а:
Пускай это первый запуск, но все же есть вероятность пропусов при повторном запуске.
Может увеличить количество минут в $postDateFrom?
[/quote]
В теории можем вынести это в настройку с значением по умолчанию = 2
Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
[/quote]
Да, тест с $postDateFrom показал удовлетворительный результат - можно вынести это в настройку с значением по умолчанию = 2.
По третему пункту ТЗ:
1. Не импортируются дополнительные категории продукта (Дополнительные категории не отображает.png)
2. В категориях перестали отображаться привязанные продукты. (Дополнительные категории не отображает.png)
[file]21032[/file]
Александр писал/а: Да, тест с $postDateFrom показал удовлетворительный результат - можно вынести это в настройку с значением по умолчанию = 2.
вынес в настройку
Александр писал/а: По третему пункту ТЗ: 1. Не импортируются дополнительные категории продукта (Дополнительные категории не отображает.png) 2. В категориях перестали отображаться привязанные продукты. (Дополнительные категории не отображает.png)
по данному пункту не вижу проблем с импортом дополнительных категорий может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
[quote]
Александр писал/а:
Да, тест с $postDateFrom показал удовлетворительный результат - можно вынести это в настройку с значением по умолчанию = 2.
[/quote]
вынес в настройку
[quote]
Александр писал/а:
По третему пункту ТЗ:
1. Не импортируются дополнительные категории продукта (Дополнительные категории не отображает.png)
2. В категориях перестали отображаться привязанные продукты. (Дополнительные категории не отображает.png)
[/quote]
по данному пункту не вижу проблем с импортом дополнительных категорий
может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
Оставьте сообщение в этой теме и вам откроются контакты пользователя
может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732. Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ... Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
[quote]
может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
[/quote]
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732.
Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ...
Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
Оставьте сообщение в этой теме и вам откроются контакты пользователя
В теории можем вынести это в настройку с значением по умолчанию = 2 Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
Это решило проблему, но не всю... - в price за одну секунду обновилось 806900 строк, но алгоритм импорта не взял этот обем в работу, тоесть импорт даже не начался(когда меньшее количество все Ок). ОЗУ/CPU на сервере с запасом, настройка $postDateFrom роли не играет, может memory limit или time limit на выполнение скриптов не пропускают?
[quote]
В теории можем вынести это в настройку с значением по умолчанию = 2
Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
[/quote]
Это решило проблему, но не всю...
- в price за одну секунду обновилось 806900 строк, но алгоритм импорта не взял этот обем в работу, тоесть импорт даже не начался(когда меньшее количество все Ок).
ОЗУ/CPU на сервере с запасом, настройка $postDateFrom роли не играет, может memory limit или time limit на выполнение скриптов не пропускают?
Оставьте сообщение в этой теме и вам откроются контакты пользователя
Александр писал/а:
В теории можем вынести это в настройку с значением по умолчанию = 2 Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
Это решило проблему, но не всю... - в price за одну секунду обновилось 806900 строк, но алгоритм импорта не взял этот обем в работу, тоесть импорт даже не начался(когда меньшее количество все Ок). ОЗУ/CPU на сервере с запасом, настройка $postDateFrom роли не играет, может memory limit или time limit на выполнение скриптов не пропускают?
Решено! - выделите пожалуйста минутному крону 4G памяти (/usr/bin/php -d memory_limit=4G -f ~/cron/cron-minute.php) и сделайте commit - этот обем позволяет нормально работать скрипту с 5М строк из price. (Проверено)
Александр писал/а:
может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732. Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ... Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
Эта проблема все еще актуальна.
[quote]
Александр писал/а:
[quote]
В теории можем вынести это в настройку с значением по умолчанию = 2
Я так понимаю это решит всю описанную вашу проблему, или же нужно на что-то отдельно обратить внимание?
[/quote]
Это решило проблему, но не всю...
- в price за одну секунду обновилось 806900 строк, но алгоритм импорта не взял этот обем в работу, тоесть импорт даже не начался(когда меньшее количество все Ок).
ОЗУ/CPU на сервере с запасом, настройка $postDateFrom роли не играет, может memory limit или time limit на выполнение скриптов не пропускают?
[/quote]
Решено!
- выделите пожалуйста минутному крону 4G памяти (/usr/bin/php -d memory_limit=4G -f ~/cron/cron-minute.php) и сделайте commit - этот обем позволяет нормально работать скрипту с 5М строк из price. (Проверено)
[quote]
Александр писал/а:
[quote]
может проверить на каком-то конкретном примере (id) из таблицы price - сделаю вручную импорт только по указанной записи
[/quote]
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732.
Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ...
Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
[/quote]
Эта проблема все еще актуальна.
Оставьте сообщение в этой теме и вам откроются контакты пользователя
Практическое испоьзование показало проблемы: Работа скрипта импорта продуктов может длится от 2 мин. до 5 ч. (на 5 млн. строк) потребляя до 4G памяти. - запуская такой скрипт на ряду с другими Автоматизациями Минутного Крона, последние не запустятся пока не закончится выполнение скрипта импорта, порой это 5 ч. - так же следующий импорт, сможет начатся только после окончания предыдущего, что делает настройку $postDateMinute неэфективной и приводиь к пропусам импортируемых данных.
Вариант решения проблем алгоритма импорта: 1. Нужно запускать паралельноо/независимо от других задач на минутном кроне (к примеру как /usr/bin/php -d memory_limit=512M -f ~/.../cron-supplierprice.php), выделив ему 4G памяти. 2. Что бы не пропускать обновления данных в price, необходимо после каждого запуска алгоритма - фиксировать время запуска (к примеру $LastDateStart), а в работу брать с учетом этой метки (SELECT * FROM `price` WHERE `post_date` > '{$LastDateStart}' ORDER BY `price`.`id` ASC). На случай если алгоритм ипорта давно не запускался, и нет необходимости импортировать устарелые данные, можно добавить настройку (Метка времени последнего запуска иморта.png), отметив которую - временной метке будет присвоено текущее время сервера ($LastDateStart = DateTime_Object::Now()->setFormat('Y-m-d H:i:s')->__toString();)
Оцените пожалуйста доработки?
Практическое испоьзование показало проблемы:
Работа скрипта импорта продуктов может длится от 2 мин. до 5 ч. (на 5 млн. строк) потребляя до 4G памяти.
- запуская такой скрипт на ряду с другими Автоматизациями Минутного Крона, последние не запустятся пока не закончится выполнение скрипта импорта, порой это 5 ч.
- так же следующий импорт, сможет начатся только после окончания предыдущего, что делает настройку $postDateMinute неэфективной и приводиь к пропусам импортируемых данных.
Вариант решения проблем алгоритма импорта:
1. Нужно запускать паралельноо/независимо от других задач на минутном кроне (к примеру как /usr/bin/php -d memory_limit=512M -f ~/.../cron-supplierprice.php), выделив ему 4G памяти.
2. Что бы не пропускать обновления данных в price, необходимо после каждого запуска алгоритма - фиксировать время запуска (к примеру $LastDateStart), а в работу брать с учетом этой метки (SELECT * FROM `price` WHERE `post_date` > '{$LastDateStart}' ORDER BY `price`.`id` ASC).
На случай если алгоритм ипорта давно не запускался, и нет необходимости импортировать устарелые данные, можно добавить настройку (Метка времени последнего запуска иморта.png), отметив которую - временной метке будет присвоено текущее время сервера ($LastDateStart = DateTime_Object::Now()->setFormat('Y-m-d H:i:s')->__toString();)
Оцените пожалуйста доработки?
[file]21053[/file]
1. Нужно запускать паралельноо/независимо от других задач на минутном кроне (к примеру как /usr/bin/php -d memory_limit=512M -f ~/.../cron-supplierprice.php), выделив ему 4G памяти.
я могу вынести на вашем проекте запуск действия в отдельный крон + игнорировать его в минутном кроне - это займёт 1ч
2. Что бы не пропускать обновления данных в price, необходимо после каждого запуска алгоритма - фиксировать время запуска (к примеру $LastDateStart), а в работу брать с учетом этой метки (SELECT * FROM `price` WHERE `post_date` > '{$LastDateStart}' ORDER BY `price`.`id` ASC). На случай если алгоритм ипорта давно не запускался, и нет необходимости импортировать устарелые данные, можно добавить настройку (Метка времени последнего запуска иморта.png), отметив которую - временной метке будет присвоено текущее время сервера ($LastDateStart = DateTime_Object::Now()->setFormat('Y-m-d H:i:s')->__toString();)
можно сделать такую настройку в действие - это то же 1ч
Александр писал/а: На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732. Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ... Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
Эту проблему проверю в ближайшее время.
[quote]
1. Нужно запускать паралельноо/независимо от других задач на минутном кроне (к примеру как /usr/bin/php -d memory_limit=512M -f ~/.../cron-supplierprice.php), выделив ему 4G памяти.
[/quote]
я могу вынести на вашем проекте запуск действия в отдельный крон + игнорировать его в минутном кроне - это займёт 1ч
[quote]
2. Что бы не пропускать обновления данных в price, необходимо после каждого запуска алгоритма - фиксировать время запуска (к примеру $LastDateStart), а в работу брать с учетом этой метки (SELECT * FROM `price` WHERE `post_date` > '{$LastDateStart}' ORDER BY `price`.`id` ASC).
На случай если алгоритм ипорта давно не запускался, и нет необходимости импортировать устарелые данные, можно добавить настройку (Метка времени последнего запуска иморта.png), отметив которую - временной метке будет присвоено текущее время сервера ($LastDateStart = DateTime_Object::Now()->setFormat('Y-m-d H:i:s')->__toString();)
[/quote]
можно сделать такую настройку в действие - это то же 1ч
[quote]
Александр писал/а:
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732.
Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ...
Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
[/quote]
Эту проблему проверю в ближайшее время.
Александр писал/а: На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732. Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ... Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
Исправлено.
[quote]
Александр писал/а:
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732.
Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ...
Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
[/quote]
Исправлено.
Тындык Максим Вадимович OneBox production писал/а:
Александр писал/а: На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732. Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ... Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
Исправлено.
+
[quote]
Тындык Максим Вадимович
OneBox production писал/а:
[quote]
Александр писал/а:
На скрине (Дополнительные категории не отображает.png) указан конкретный пример (id) из таблицы price - 2125275, его (id) в OneBOX -412732.
Так же на скрине видно, что у id 2125275 (BOX id =412732) главная категория 597 (BOX id =1500) и дополнительные: 887 (BOX id =1762), 1055 (BOX id = 1297), 1059 (BOX id =1928), ...
Открыв в боксе любую изперечисленных Дополнительных категорий - мы не найдем продукт с BOX id =412732.
[/quote]
Исправлено.
[/quote]
+
1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени) Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска. После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
2. вынес запуск действия в отдельный минутный крон, с автоматизаций его не удалять.
1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени)
Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска.
После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
2. вынес запуск действия в отдельный минутный крон, с автоматизаций его не удалять.
Тындык Максим Вадимович OneBox production писал/а: 1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени) Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска. После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
+
2. вынес запуск действия в отдельный минутный крон, с автоматизаций его не удалять.
Смотрю кронам добавили памяти, но почему то лог fatal-2023-08-28.log жалуется каждую минуту: [2023-08-28 14:06:12] point: /var/www/..../cron/cron-minute.php engine_sessionid: 1693220763_1129 data: Array ( [type] => 1 [message] => Allowed memory size of 536870912 bytes exhausted (tried to allocate 16384 bytes) [file] => /var/www/..../web/packages/ConnectionManager/ConnectionManager_MySQLi.class.php [line] => 125
И алгоритм иморта с 3G памяти не взял в работу 4909532 строк, а с 4G берет ок - добавьте пожалуйста это значение.
[quote]
Тындык Максим Вадимович
OneBox production писал/а:
1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени)
Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска.
После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
[/quote]
+
[quote]
2. вынес запуск действия в отдельный минутный крон, с автоматизаций его не удалять.
[/quote]
Смотрю кронам добавили памяти, но почему то лог fatal-2023-08-28.log жалуется каждую минуту:
[2023-08-28 14:06:12]
point: /var/www/..../cron/cron-minute.php
engine_sessionid: 1693220763_1129
data: Array
(
[type] => 1
[message] => Allowed memory size of 536870912 bytes exhausted (tried to allocate 16384 bytes)
[file] => /var/www/..../web/packages/ConnectionManager/ConnectionManager_MySQLi.class.php
[line] => 125
И алгоритм иморта с 3G памяти не взял в работу 4909532 строк, а с 4G берет ок - добавьте пожалуйста это значение.
Александр писал/а: Смотрю кронам добавили памяти, но почему то лог fatal-2023-08-28.log жалуется каждую минуту: [2023-08-28 14:06:12] point: /var/www/..../cron/cron-minute.php engine_sessionid: 1693220763_1129 data: Array ( [type] => 1 [message] => Allowed memory size of 536870912 bytes exhausted (tried to allocate 16384 bytes) [file] => /var/www/..../web/packages/ConnectionManager/ConnectionManager_MySQLi.class.php [line] => 125
это минутному крону не хватило памяти, можно поднять (я поднял до 3G)
Александр писал/а: И алгоритм иморта с 3G памяти не взял в работу 4909532 строк, а с 4G берет ок - добавьте пожалуйста это значение.
я вижу вы уже видимо самостоятельно это сделали
[quote]
Александр писал/а:
Смотрю кронам добавили памяти, но почему то лог fatal-2023-08-28.log жалуется каждую минуту:
[2023-08-28 14:06:12]
point: /var/www/..../cron/cron-minute.php
engine_sessionid: 1693220763_1129
data: Array
(
[type] => 1
[message] => Allowed memory size of 536870912 bytes exhausted (tried to allocate 16384 bytes)
[file] => /var/www/..../web/packages/ConnectionManager/ConnectionManager_MySQLi.class.php
[line] => 125
[/quote]
это минутному крону не хватило памяти, можно поднять (я поднял до 3G)
[quote]
Александр писал/а:
И алгоритм иморта с 3G памяти не взял в работу 4909532 строк, а с 4G берет ок - добавьте пожалуйста это значение.
[/quote]
я вижу вы уже видимо самостоятельно это сделали
Тындык Максим Вадимович OneBox production писал/а:
Александр писал/а: Я сделал это для теста, нужно сделать commit с 4G.
поставил обеим 5 с запасом чтобы
+
[quote]
Тындык Максим Вадимович
OneBox production писал/а:
[quote]
Александр писал/а:
Я сделал это для теста, нужно сделать commit с 4G.
[/quote]
поставил обеим 5 с запасом чтобы
[/quote]
+
1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени) Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска. После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
Максим, настройка пропускает измененные данные с момента последнего запуска действия. Для наглядности сделал выборку по времени обновления данных в таблице price. (пропущенный_массив.png) Красным отмечено время обновленнных данных которое скрипт импорта не взял в работу. (Настройки алгоритма импорта.png) Провев несколько тестов, выяснил что пропуски не зависят от обёма данных или самих данных, тоесть обновив те же данные - алгоритм их взял в работу. Думаю проблема кроется в тригере запуска {$postDateFrom}, а именно меня смущает $postDateMinute = 2, проверьте пожалуйста еще раз..
[quote]
1. доработал настройку "Импортировать данные измененные с момента последнего запуска действия" (при запуске запоминает время старта действия и при следующем запуске забирает данные с этого времени)
Если это первый запуск с данной настройкой - то возьмёт за N минут указанные в действии и запомнит время запуска для последующего запуска.
После этого убираете в настройке N минут - и действие работает согласно дате предыдущего запуска. Если нужно запарсить с конкретного времени - убираете галочку и ставите за сколько минут запарсить единоразово, потом возвращаете.
[/quote]
Максим, настройка пропускает измененные данные с момента последнего запуска действия.
Для наглядности сделал выборку по времени обновления данных в таблице price. (пропущенный_массив.png)
Красным отмечено время обновленнных данных которое скрипт импорта не взял в работу. (Настройки алгоритма импорта.png)
Провев несколько тестов, выяснил что пропуски не зависят от обёма данных или самих данных, тоесть обновив те же данные - алгоритм их взял в работу.
Думаю проблема кроется в тригере запуска {$postDateFrom}, а именно меня смущает $postDateMinute = 2, проверьте пожалуйста еще раз..
[file]21149[/file]
[file]21152[/file]
Оставьте сообщение в этой теме и вам откроются контакты пользователя
Если не баг, то оцените доработку. После импорта через приложение «CMS ExtraParts» - данные о количестве, закупочной цене, дате обновления в Поставщиках продукта изменяются, но Автоматический Пересчет Цен и Наличия продуктов не происходит, как через Загрузку Прайс-листа (xlsx) поставщика.
Если не баг, то оцените доработку.
После импорта через приложение «CMS ExtraParts» - данные о количестве, закупочной цене, дате обновления в Поставщиках продукта изменяются, но Автоматический Пересчет Цен и Наличия продуктов не происходит, как через Загрузку Прайс-листа (xlsx) поставщика.
Проблему уже описывал, но ответа нет:
https://1b.app/ru/forum/supplier-and-price-list-management/17355-ne-proishodit-avtomaticheskiy-pereschet-tsen-i-nalichiya-produkta-posle-obnovleniya-produktov-postavshchikov/
https://1b.app/ru/forum/supplier-and-price-list-management/17381-ne-pratsyuie-zayavleniy-funktsional-onebox-os/
Пожалуйста, присоединяйтесь к диалогу. Если вам есть что сказать - пожалуйста, напишите комментарий. Для входа потребуется мобильный телефон и смс-код для идентификации.
Войти и написать комментарий