Ми використовуємо файли cookies для оптимізації контенту та швидкодії сайту. Продовжуючи відвідування сайту, ви погоджуєтесь на використання файлів cookies.
Залишіть повідомлення в цій темі і відкриються контакти користувача
1. Після імпорту продукту з кількома постачальниками (Джерело імпорту.png), через програму «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), у OneBox OS створюються дублюючі/ідентичні картки цього продукту, у кожній з яких різний постачальник (Дублі.png).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
-Потрібно що при імпорті в OneBox OS створювалася тільки одна унікальна (зв'язка Артикул-Бренд) картка продукту, з усіма постачальниками цього продукту (Групування постачальників по продукту.png).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
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).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
- Потрібно Виключити імпорт категорій 2-го рівня, щоб дерево категорій в OneBox OS будувалося без груп 2-го рівня (вони ніколи не несуть у собі продуктів). Тобто батьком (id_parent) груп 1-го рівня (level = 1) повинні бути групи 3-го рівня (level = 3).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
- Категорії з ознакою price_group.visible=0 виключити з імпорту в OneBox OS (Категорії.png).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
3. Під час імпорту продуктів (box_auto_action_extraparts_import_products.php) приналежність продукту до категорії береться з price.id_price_group (головна категорія).
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
Але оскільки продукт може одночасно належати кільком категоріям (Додаткові категорії продукту.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]
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
[file]20855[/file]
[file]20856[/file]
[file]20857[/file]
[file]20858[/file]
[file]20859[/file]
[file]20860[/file]
[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).
[code] 1. Після імпорту продукту з кількома постачальниками (Джерело імпорту.png), через програму «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), у OneBox OS створюються дублюючі/ідентичні картки цього продукту, у кожній з яких різний постачальник (Дублі.png). -Потрібно що при імпорті в OneBox OS створювалася тільки одна унікальна (зв'язка Артикул-Бренд) картка продукту, з усіма постачальниками цього продукту (Групування постачальників по продукту.png). [/code] надублити могло тому що в дії прив'язка на пошук по артикулу за налаштуванням "Унікальність артикулів" - у такому разі картки створювало б унікально по зв'язці артикул+бренд, а на ділі - по артикулу через вимкнене налаштування не шукає або вам потрібно включати налаштування, або змінювати логіку в дії та шукати по артикулу товари - це +1год якщо допрацьовувати у вигляді налаштування так само я бачу що у вас відбувається пошук по іду з бази даних, який пишеться в зовнішній ід - власне це цілком імовірно потрібно допрацьовувати налаштування щоб вимикати пошук за зовнішнім ід - щоб шукало виключно по артикулу і після перевіряло відповідність бренду - це +1ч вигляді налаштування [code] 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). [/code] у вигляді налаштувань - 2ч [code] 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). [/code] у вигляді налаштування - 2ч
[code]
1. Після імпорту продукту з кількома постачальниками (Джерело імпорту.png), через програму «CMS ExtraParts» (box_auto_action_extraparts_import_products.php), у OneBox OS створюються дублюючі/ідентичні картки цього продукту, у кожній з яких різний постачальник (Дублі.png).
-Потрібно що при імпорті в OneBox OS створювалася тільки одна унікальна (зв'язка Артикул-Бренд) картка продукту, з усіма постачальниками цього продукту (Групування постачальників по продукту.png).
[/code]
надублити могло тому що в дії прив'язка на пошук по артикулу за налаштуванням "Унікальність артикулів" - у такому разі картки створювало б унікально по зв'язці артикул+бренд, а на ділі - по артикулу через вимкнене налаштування не шукає
або вам потрібно включати налаштування, або змінювати логіку в дії та шукати по артикулу товари - це +1год якщо допрацьовувати у вигляді налаштування
так само я бачу що у вас відбувається пошук по іду з бази даних, який пишеться в зовнішній ід - власне це цілком імовірно потрібно допрацьовувати налаштування щоб вимикати пошук за зовнішнім ід - щоб шукало виключно по артикулу і після перевіряло відповідність бренду - це +1ч вигляді налаштування
[code]
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).
[/code]
у вигляді налаштувань - 2ч
[code]
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).
[/code]
у вигляді налаштування - 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('Ymd H:i:s')->__toString();).
Вибірка (Вибірка.png) показує об'єм оновлених (969981) рядків у діапазоні 05:47:11 - 05:58:44.
Оновлення в джерелі ключа id_provider відбувається 1-2 рази на добу.
Нехай це перший запуск, але є ймовірність пропусків при повторному запуску.
Чи може збільшити кількість хвилин у $postDateFrom?
1.1. Імпортуються не всі товари, постачальники (джерело імпорту пропущені.png)
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
1.2. Під час імпорту імпортуються не всі дані постачальника (постачальники.png)
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Зверніть увагу на час пропущених price.post_date.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
-Видно що збій відбувається, коли в джерелі (price) з'являється багато оновлених даних.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Алгоритм оновлення даних у джерелі (таблиця price) відбувається так:
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Перед вставкою масиву даних з ключем id_provider, з цього ж ключа таблиці price обнулюються поля price і stock.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
З додаванням/оновленням даних у price, також оновлюється поле post_date, що стартує box_auto_action_extraparts_import_products.php у якого є всього 2 хв. ($postDateFrom = DateTime_Object::Now()->addMinute(-2)->setFormat('Ymd H:i:s')->__toString();).
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Вибірка (Вибірка.png) показує об'єм оновлених (969981) рядків у діапазоні 05:47:11 - 05:58:44.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Оновлення в джерелі ключа id_provider відбувається 1-2 рази на добу.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Нехай це перший запуск, але є ймовірність пропусків при повторному запуску.
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
Чи може збільшити кількість хвилин у $postDateFrom?
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
[file]21025[/file]
[file]21026[/file]
[file]21031[/file]
[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]
[file]21032[/file]
Тиндик Максим Вадимович
[file]21032[/file]
OneBox production написав:
[file]21032[/file]
[quote]
[file]21032[/file]
Олександр писав/ла:
[file]21032[/file]
Нехай це перший запуск, але є ймовірність пропусків при повторному запуску.
[file]21032[/file]
Чи може збільшити кількість хвилин у $postDateFrom?
[file]21032[/file]
[/quote]
[file]21032[/file]
Теоретично можемо винести це в налаштування зі значенням за умовчанням = 2
[file]21032[/file]
Я так розумію це вирішить всю описану вашу проблему, чи потрібно на щось окремо звернути увагу?
[file]21032[/file]
[/quote]
[file]21032[/file]
Так, тест із $postDateFrom показав задовільний результат - можна винести це в налаштування зі значенням за замовчуванням = 2.
[file]21032[/file]
За третім пунктом ТЗ:
[file]21032[/file]
1. Не імпортуються додаткові категорії продукту (Додаткові категорії не відображає.png)
[file]21032[/file]
2. У категоріях перестали відображатись прив'язані продукти. (Додаткові категорії не відображає.png)
[file]21032[/file]
[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 (BO ), ... Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ...
Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ... Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ...
Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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('Ymd H:i:s')->__toString();)
Оцініть будь ласка доопрацювання?
Практичне використання показало проблеми:
[file]21053[/file]
Робота скрипту імпорту продуктів може тривати від 2 хв. до 5 год. (на 5 млн. рядків) споживаючи до 4G пам'яті.
[file]21053[/file]
- запускаючи такий скрипт поряд з іншими Автоматизаціями Хвилинного Крона, останні не запустяться доки не закінчиться виконання скрипту імпорту, часом це 5 год.
[file]21053[/file]
- так само наступний імпорт, зможе розпочатися тільки після закінчення попереднього, що робить налаштування $postDateMinute неефективним і призводи до пропущень даних, що імпортуються.
[file]21053[/file]
Варіант вирішення проблем алгоритму імпорту:
[file]21053[/file]
1. Потрібно запускати паралельно/незалежно від інших завдань на хвилинному кроні (наприклад /usr/bin/php -d memory_limit=512M -f ~/.../cron-supplierprice.php), виділивши йому 4G пам'яті.
[file]21053[/file]
2. Щоб не пропускати оновлення даних у price, необхідно після кожного запуску алгоритму - фіксувати час запуску (наприклад $LastDateStart), а роботу брати з урахуванням цієї мітки (SELECT * FROM `price` WHERE `post_date` > '{$ LastDateStart}' ORDER BY `price`.`id` ASC).
[file]21053[/file]
На випадок, якщо алгоритм іпорту давно не запускався, і немає необхідності імпортувати застарілі дані, можна додати налаштування (Мітка часу останнього запуску іморта.png), відзначивши яку - тимчасовій мітці буде присвоєно поточний час сервера ($LastDateStart = DateTime_Object::Now()- >setFormat('Ymd H:i:s')->__toString();)
[file]21053[/file]
Оцініть будь ласка доопрацювання?
[file]21053[/file]
[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('Ymd 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 (BO ), ... Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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('Ymd 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 (BO ), ...
Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ... Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ...
Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ... Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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 (BO ), ...
Відкривши у боксі будь-яку з перелічених Додаткових категорій - ми не знайдемо продукт з 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] => Відображений розмір 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] => Відображений розмір 536870912 bytes exhausted (tried to allocate 16384 bytes)
[file] => /var/www/..../web/packages/ConnectionManager/ConnectionManager_MySQLi.class.php
[line] => 125
І алгоритм іморту з 3G пам'яті не взяв в роботу 4909532 рядків, а з 4G бере ок - будь ласка, додайте це значення.
це хвилинному крону забракло пам'яті, можна підняти (я підняв до 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] => Відображений розмір 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]
[file]21149[/file]
[file]21152[/file]
1. допрацював налаштування "Імпортувати дані змінені з моменту останнього запуску дії" (при запуску запам'ятовує час старту дії та при наступному запуску забирає дані з цього часу)
[file]21149[/file]
[file]21152[/file]
Якщо це перший запуск з даним налаштуванням, то візьме за N хвилини вказані в дії і запам'ятає час запуску для наступного запуску.
[file]21149[/file]
[file]21152[/file]
Після цього прибираєте в налаштуванні N хвилин - і дія працює згідно з датою попереднього запуску. Якщо потрібно запарсити з конкретного часу – забираєте галочку і ставите за скільки хвилин запарсити одноразово, потім повертаєте.
[file]21149[/file]
[file]21152[/file]
[/quote]
[file]21149[/file]
[file]21152[/file]
Максим, налаштування пропускає змінені дані з останнього запуску дії.
[file]21149[/file]
[file]21152[/file]
Для наочності зробив вибірку часу оновлення даних у таблиці price. (пропущений_масив.png)
[file]21149[/file]
[file]21152[/file]
Червоним зазначено час оновлених даних, які скрипт імпорту не взяв у роботу. (Налаштування алгоритму імпорту.png)
[file]21149[/file]
[file]21152[/file]
Провівши кілька тестів, з'ясував, що пропуски не залежать від обсягу даних або самих даних, тобто оновивши ті ж дані - алгоритм їх взяв у роботу.
[file]21149[/file]
[file]21152[/file]
Думаю проблема криється в тригері запуску {$postDateFrom}, а саме мене бентежить $postDateMinute = 2, перевірте будь ласка ще раз.
[file]21149[/file]
[file]21152[/file]
[file]21149[/file]
[file]21152[/file]
[file]21149[/file]
[file]21152[/file]
Якщо не баг, то оцініть доопрацювання.
Після імпорту через програму «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/
Будь ласка, приєднуйтесь до діалогу. Якщо вам є що сказати – будь ласка, напишіть коментар. Для входу потрібний мобільний телефон та смс-код для ідентифікації.
Увійти та написати коментар