Володя

Володя

С нами с 18 декабря 2012; Место в рейтинге пользователей: #4
Володя
5 часов назад
0
Пожалуйста, будут вопросы — обращайтесь.
Володя
5 часов назад
+1
Добрый день.

[msopOnBeforeGetModification]
[rid] - integer
[iid] - integer
[options] - array
[excludeIds] - array
[excludeType] - array

[msopOnAfterGetModification]
[rid] - integer
[iid] - integer
[options] - array
[excludeIds] - array
[excludeType] - array
[modification] - object

[msopOnBeforeGetCost]
[rid] - integer
[price] - double
[modification] - array
[isAjax] - boolean

[msopOnAfterGetCost]
[rid] - integer
[cost] - double
[modification] - array
[isAjax] - boolean

[msopOnGetFullCost]
[product] - object
[rid] - integer
[cost] - double
[options] - array
[modifications] - array

[msopOnBeforeGetMass]
[rid] - integer
[weight] - double
[modification] - array
[isAjax] - boolean

[msopOnAfterGetMass]
[rid] - integer
[mass] - double
[modification] - array
[isAjax] - boolean

[msopOnGetFullMass]
[product] - object
[rid] - integer
[mass] - double
[options] - array
[modifications] - array

[msopOnModificationBeforeSave]
[mode] - string
[modification] - object
[cacheFlag] - NULL

[msopOnModificationSave]
[mode] - string
[modification] - object
[cacheFlag] - NULL

[msopOnModificationBeforeRemove]
[modification] - object
[ancestors] - array

[msopOnModificationRemove]
[modification] - object
[ancestors] - array

[msopOnGetModificationById]
[id] - integer
[rid] - integer
[found] - boolean
[options] - array
[modification] - object

[msopOnModificationNotFound]
[id] - integer
[rid] - integer
[found] - boolean
[options] - array
[modification] - object

[msopOnManagerPrepareObjectData]
[type] - string
[data] - array
[self] - object
Володя
Вчера в 20:33
0
Алексей, ну я же вам прямо написал — задавайте конкретный вопрос.

И что документация к сожалению не появилась. Ну если она не появилась, то неужели сейчас вот появится? С учётом того что апгрейда не было несколько лет.

Я всегда рад помочь, но для этого мне нужно знать что вам конкретно необходимо.
Володя
Вчера в 20:00
0
Добрый день. Нет полная документация к сожалению не появилась. Если есть конкретный вопрос спрашивайте.

По событиям — оно только одно на получение аякс запроса от коннектора.
Володя
Вчера в 19:58
0
Я знаю. Автор жив. Пишите в ТП дополнения — вам ответят.
Володя
21 февраля 2024, 15:33
0
А еще вопрос такой, только не ругайтесь, пожалуйста)
Я что так пугающе пишу или у меня буквы страшные? )

Как вывести выбранный размер товара в заказе?
надо прежде уточнить где вывести?
Володя
21 февраля 2024, 15:06
+1
Добрый день.
Добавить вручную связь


загрузить поля


активировать нужное поле
Володя
21 февраля 2024, 10:46
0
С репозитория не получилось ее скачать, потом локально пробовал поставил, там менюшка не создалась.
Ну ясно надо править под 3ку. Надо править билдер, надо причесать код и тд и тп. Кто его сейчас поддерживает хз, у Николая он в архиве и вряд ли ему это интересно. Ну как то так…
Володя
21 февраля 2024, 10:32
0
`Носите` с удовольствием! Рад что тебе понравилось.)
Володя
19 февраля 2024, 19:48
0
А если перейти на modSessionHandler ошибки так же появляются?
Володя
14 февраля 2024, 11:05
+1
Все верно, но никто же не застрахован что в какой то момент времени твой сайт не подвергнется скажем атаке ботов и запрос без лимита будет вызывать задержки при работе сайте.
пока идет запрос удаления новый пользователь не получит новый идентификатор сессии, уже действующий пользователь тоже словит задержку и будет нервно курить и в итоге закроет сайт.

Так вот чтобы не было тормозов я и решил ввести limit, нам же не принципиально очистить таблицу за один проход.

А в smartSessions медленная работа, думается, обусловлена LIKE поиском по колонке user_agent во время очистки и отсутствием индекса))) нужно добавить
да, это ускорит удаление, но не сильно, в случае с большим кол-ом данных думаю будут те же тормоза что я описал выше.
Володя
13 февраля 2024, 21:14
+5
Отписываюсь по тестированию, тестировал
— на modhost.pro/ на тарифе разработка, сгенерировал 500 000 записей уникальных сессий с 70% ботов.
— выделенный сгенерировал 2 000 000 записей уникальных сессий с 70% ботов.

Далее по тексту режим:

standart — стандартный запрос на удаление что используется в modSessionHandler
$this->modx->removeCollection(Session::class, [
    'access:<' => time() - $this->gcMaxLifetime
]);

ext — запрос на удаление что используется в ExtSessionHandler

Сразу стало заметно тормоза:
Session cleanup time for mode «standart»: 0.0150 s
Session cleanup time for mode «ext»: 3.3543 s

Был один запрос с несколькими условиями github.com/vgrish/ExtSession/blob/490dfc4a7a8f1d1dd18a988573f5b607fadc457c/core/components/extsession/src/ExtSessionHandler.php#L180-L204

Разбил на несколько, стало чуть получше но все равно не то.
Добавил общий индекс на 3 колонки github.com/vgrish/ExtSession/blob/8223ff63e5574b8697fcf0eb66e55c93eaba7fd6/core/components/extsession/schema/extsession.mysql.schema.xml#L36-L40

Session cleanup time for mode «ext»: 1.3543 s — Тоже не фонтан.

Перекинул колонки github.com/vgrish/ExtSession/blob/8223ff63e5574b8697fcf0eb66e55c93eaba7fd6/core/components/extsession/schema/extsession.mysql.schema.xml#L8-L10 перед колонкой data

Стало еще получше.
Ну и подумал нам же не надо прям сразу за раз удалять все записи, пускай удаляет в несколько проходов и добавил к удалению LIMIT.

И вот тут уже стало совсем хорошо
Session cleanup time for mode «ext»: 0.0029 s

Так что с помощью тестов удалось найти слабое место и исправить ситуацию. LIMIT Подбирается опытным путем в зависимости от посещаемости сайта и мощности сервера. По умолчанию использовал 5000.
Володя
12 февраля 2024, 19:52
0
Добрый вечер. Нет, тестирования под нагрузкой не проводилось. С удовольствием поучавствую в тестировании — обращайтесь.
Потому что на smartSessions при сроке жизнь 1 месяц, и большом количестве посещений (около полумиллиона юзеров в месяц) —
В каком месте тормозило?