Помогите понять логику…
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 для каждого товара корзины дублируются данные о товаре, все данные о покупателе (включая ФИО, адрес, телефон, день рождения и хэш пароля), все способы доставки с их данными (которые занимают кучу места)

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