4.3.6 таблица cscart_sessions

Помогите понять логику…

cscart_sessions - прочел что типа “хранит сессии 2 часа”, а именно, какая настройка задает эти 2 часа?
Потом сессии типа перемещаются в таблицу cscart_stored_sessions, и там хранятся 2 недели… Это что за настройка 2 недели?

В чем вопрос - у меня в cscart_sessions почти 500 000 записей и размер ее 0.5 гига. При этом в поле expiry значения какие-то адские, 1 700 000 и около, меньше 1 500 000 нет. Если это секунды - то это же 53 года…

При этом cscart_stored_sessions - вообще пустая!

Я вот думаю как таблицу cscart_sessions нерисково почистить.

1 лайк

config.php

// Sessions storage live time
define('SESSIONS_STORAGE_ALIVE_TIME',  SECONDS_IN_DAY * 7 * 2); // 2 weeks

А… До меня начинает допирать… То есть у меня устроен идиотизм?

// Session live time
define('SESSION_ALIVE_TIME', SECONDS_IN_DAY * 7 * 52); // 1 year

// Sessions storage live time
define('SESSIONS_STORAGE_ALIVE_TIME',  SECONDS_IN_DAY * 7 * 52); // 1 year

Получается, что у меня существуют только сессии “первого уровня” и в таблицу cscart_stored_sessions ничего не попадает, так как второе время должно быть больше первого?

А в чем смысл хранилища сессий двух уровней? Это одни и те же сессии? Типа иметь маленькое хранилище “оперативных” сессий, клиентов что часто бывают, и остальных скидывать в чулан? Чтобы типа не перегружать базу?

А сессия, отправленная в чулан (cscart_stored_sessions) это то же то и обычная?

Получается, если я хочу очень долго хранить сессии, то все равно какое Session live time потому что в итоге работает Sessions storage live time???

И вот в догадках теперь я теряюсь:

cscart_sessions минимальное значение expiry = 1685173568 тогда как “сейчас” = 1671026937 мало того, если в окне инкогнито открыть сайт и посмотреть expiry для только что созданной…
А!!! Понял.
expiry = “сейчас” + Session live time

ВЫВОД:

  • все работает как надо
  • ничего чистить вручную не надо, так как у меня был задан год и 0.5 млн сессий (преведмедвед роботы поисковые) это накопившееся за год.
  • устранить идиотизм с одинаковыми значениями выше
  • ждать когда cscart_sessions сдуется сама.

ПОСЛЕДНИЙ ВОПРОС контрольный в голову: я прав, что сессия, сохраненная в cscart_stored_sessions такая же полноценная как cscart_sessions, То есть, установив Session live time = неделя, а Sessions storage live time = год, клиент вернувшийся в пределах года все равно увидит свою корзину?

1 лайк

Если я правильно помню, залогиненные пользователи хранятся в sessions, если время логина проходит, то данные уходят в stored_sessions. Вернувшийся клиент увидит свою корзину

Точно - нет. А незалогиненные? Они точно в этой таблице есть. Я проверял.

Версия CS-Cart 4.15.2
В момент захода на сайт создаются записи в обеих этих таблицах с одинаковым session_id.

Поле data таблицы sessions содержит разделы settings, _validator_data, embedded, auth, wishlist, cart, last_view, recaptcha, sort_by, sort_order, items_per_page, continue_url, breadcrumb_category_id, products_layout, notifications, comparison_list, products_popularity, promotion_notices, recently_viewed_products, checkout_mode
Модули могут дописывать сюда свои данные.

В раздел cart для каждого товара корзины дублируются данные о товаре, все данные о покупателе (включая ФИО, адрес, телефон, день рождения и хэш пароля), все способы доставки с их данными (которые занимают кучу места)
image

Поле data таблицы stored_sessions содержит только данные раздела settings из поля data таблицы sessions.

1 лайк