Перейти к содержанию

Рекомендуемые сообщения

Добрый день.

Использую ваш модуль. Столкнулся с проблемой, что на большом объёме процесс формирования кеша длится либо очень долго (несколько часов), либо в принципе не выполняется в конце концов.

Хочу понять, как оптимизировать этот процесс и от чего зависит быстродействие. Уточните, пожалуйста:

1. Быстродействие зависит от количества товаров в связанной категории (откуда подбираются товары) или от количества в опорной категории (для которой подбираются товары). От какой именно категории?

2. При добавлении условий, которые по идее сужают перечень подходящих товаров, эти условия за счёт уменьшения подходящих товаров ускоряют работу или наоборот каждое условие добавляет времени к вычислению? Ну т.е. мне лучше максимально добавлять побольше условий, чтобы по лишним товарам не проходился модуль, или наоборот лучше как можно меньше условий?

3. Про параметр limit поясните, не очень понимаю. В вашем примере написано:

Цитата

Теперь, с помощью этого параметра Вы можете задать кол-во обновляемых связей, например 5. И в планировщике выставить задание на выполнение каждые 10 минут, т.е. 6 раз в час. Тогда за один час Вы сможете обновить 6 раз * 5 связей = 30 связей или за сутки - 720 связей, и дальше по кругу. Такое распределение в количестве и во времени значительно снижает нагрузку на сайт. Например,

 

5 23 * * * php /path/to/admin.php --dispatch=ab__ia_data.cron_update_cache --limit=5 --switch_company_id=*  

Во-первых, чтобы каждые 10 минут выполнялся, то наверное нужно что-то типа того:

/10 * * * * php /path/to/admin.php --dispatch=ab__ia_data.cron_update_cache --limit=5 --switch_company_id=*  

 

Во-вторых, не очень понимаю вот что: например, у меня всего 100 связей. Скрипт как-то понимает, что он в предыдущий раз обработал первые 5 связей, и при каждом последующем запуске будет обрабатывать уже следующие 5 из 95 оставшихся? Потом следующие 5 из 90 оставшихся и так далее? Пока не обработает все, а потом начнёт обрабатывать по второму кругу и т.д.?

 

Ещё интересно, как мне в принципе оценить, какое адекватное количество нужно за раз проставлять в параметре limit. По идее хочется каким-то образом знать общее количество связей, чтобы я понимал, что например, у меня 7000 связей, а я хочу, чтобы у меня все связи обновились не позднее, чем за неделю, т.е. за день мне нужно, чтобы обновлялось 1000 связей. И тогда мне запускать крон каждый час с лимитов limit=1000/24=42.

Но проблема, что я не знаю, как понять, сколько у меня всего связей, чтобы эти расчёты выполнить. А то я ставлю сейчас какой-то limit, а с моим количеством связей ему нужно полгода, например, чтобы их все по первому кругу только обработать.

Изменено пользователем bobrovantig
Ссылка на комментарий

@bobrovantig Здравствуйте!

 

1. Время работы по большей части зависит от количества товаров в опорной категории. Есть смысл устанавливать больше условий для фильтрации опорных товаров, т.к. для каждого найденного товара применяются все условия для поиска товаров в связанной категории. Так же на времени генерации сказывается количество характеристик и вариантов характеристик, которые участвуют в фильтрации товаров()

2. Чем точнее выбор и меньше товаров - тем быстрее. Но при этом каждое дополнительное условие добавляет времени на обработку. Что делать? - Добавлять минимум условий, которые отфильтруют максимум товаров.

3.

  • Во-первых: на странице указан пример задания, время выполнения полностью зависит от потребностей пользователя.Вы правы, чтобы выполнять каждые 10 минут нужно указать так как вы написали
  • Во-вторых: да.
В 29.09.2023 в 11:10, bobrovantig сказал:

Ещё интересно, как мне в принципе оценить, какое адекватное количество нужно за раз проставлять в параметре limit.

Проставляйте такое количество, которое не сильно нагружает сервер. В случае если у вас достаточно сильный сервер - можете и вовсе запускать генерацию всего списка без использования лимитов. Что касается количества - можно посмотреть в базу данных в таблицу ab__ia_joins. Или же на страницу "Список опорных категорий", количество связанных категорий может примерно указывать на количество связей(в случае если в рамках одной опорной категории нет нескольких правил для одной связанной категории)

.....

P.S. Мы не проводили подобного рода исследовани, так что в изложенном возможны ошибки.

P.P.S.В своей работе модуль использует много штатного функционала, в частности для получения списка товаров используется функция fn_get_products() и часть работы выполняется именно ею (функция работает правильно, это просто для информации).

Ссылка на комментарий
3 часа назад, ab.developer.lev сказал:

Что делать? - Добавлять минимум условий, которые отфильтруют максимум товаров.

Спасибо за ответ, но сильно понятнее не стало, если честно:)

Ну т.е. чем больше товаров нужно отфильтровать, тем больше условий мне вообще-то нужно добавить)

3 часа назад, ab.developer.lev сказал:

Есть смысл устанавливать больше условий для фильтрации опорных товаров, т.к. для каждого найденного товара применяются все условия для поиска товаров в связанной категории. Так же на времени генерации сказывается количество характеристик и вариантов характеристик, которые участвуют в фильтрации товаров()

Тут какой-то взаимоисключающий совет: нужно устанавливать больше условий, но чем количество этих условий судя по ответу влияет на скорость генерации)

 

3 часа назад, ab.developer.lev сказал:

можно посмотреть в базу данных в таблицу ab__ia_joins.

я, к сожалению, не умею пользоваться БД и смотреть там что-то.

 

Ладно, буду как-то пытаться по ощущениям всё настраивать. Вообще инструмент топовый, конечно, но на большом объёме данных у меня перестал работать, к сожалению.

Ссылка на комментарий

Ещё вопросы касательно выключенных товаров/категорий:

  1. Тратит ли время модуль на выключенные товары или игнорирует их?
  2. Тратит ли время модуль на включенные товары, но в выключенных категориях, или игнорирует их? Например, у меня есть большая опорная категория, в которой я настраиваю связи. А внутри этой большой опорной есть несколько подкатегорий, часть из которых выключена. Будет ли модуль тратить на них ресурсы?
Ссылка на комментарий
21 минуту назад, ab.developer.lev сказал:

Нет, не игнорирует. 

Т.е. надо не просто категорию выключать,  а ещё и сами товары внутри категории отключать. Ок, понял, спасибо.

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...