Сессии
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 19 лет 2 месяца
Сессии
при визите юзера на сайт, в phpbb_sessions вносится новая запись с уникальным session_id.
Если 500 юзеров зайдут на сайт по одному разу и больше не вернутся, то не будут же их session_id захлямлять базу. Как от устаревших id избавились разработчики phpbb ?
Если 500 юзеров зайдут на сайт по одному разу и больше не вернутся, то не будут же их session_id захлямлять базу. Как от устаревших id избавились разработчики phpbb ?
Последний раз редактировалось Textor 18.02.2006 22:14, всего редактировалось 1 раз.
-
- phpBB 2.0.7
- Сообщения: 560
- Стаж: 19 лет 2 месяца
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 19 лет 2 месяца
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Textor вам принцип изложить? Если да, то:
Удаляем все записи у которых timestamp - NOW() > 600 (период жизни сессии)
Если юзер пришел с имеющимся SID (в cookie или GET), то пытаемся апдейтить запись этого sidа в базе, при этом изменяется ее timestamp...
Если апдейт неудался ($db->sql_query == ok && $db->sql_affectedrows < 1) то сид у этого юзера - устаревший, значит в "гости" его.
Дальше я думаю уже не нужно продолжать...
Удаляем все записи у которых timestamp - NOW() > 600 (период жизни сессии)
Если юзер пришел с имеющимся SID (в cookie или GET), то пытаемся апдейтить запись этого sidа в базе, при этом изменяется ее timestamp...
Если апдейт неудался ($db->sql_query == ok && $db->sql_affectedrows < 1) то сид у этого юзера - устаревший, значит в "гости" его.
Дальше я думаю уже не нужно продолжать...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 19 лет 2 месяца
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Удаление может происходить до всех действий с sid для всех записей у который timestamp отличается от текущего времени на длительность сессии...
При этом нужно чтобы поле timestamp было проиндексировано (иначе перебор записей начнется и база напряжет хостера)
Или вас все-таки интересует как это сделано именно в phpbb ?
При этом нужно чтобы поле timestamp было проиндексировано (иначе перебор записей начнется и база напряжет хостера)
Или вас все-таки интересует как это сделано именно в phpbb ?
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 19 лет 2 месяца
-
- Former team member
- Сообщения: 582
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Файл includes/sessions.php:
В функции session_pagestart() вызывается функция session_clean() которая делает примерно то что я написал раньше...
В функции session_pagestart() вызывается функция session_clean() которая делает примерно то что я написал раньше...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
-
- phpBB 1.4.2
- Сообщения: 52
- Стаж: 18 лет 10 месяцев
Простите, а под timestamp'ом имеется в виду поле session_time таблицы _sessions?avm писал(а):При этом нужно чтобы поле timestamp было проиндексировано (иначе перебор записей начнется и база напряжет хостера)
Или вас все-таки интересует как это сделано именно в phpbb ?
у меня в этой таблице стоят следующие индексы. На что ругается?
-
- Former team member
- Сообщения: 9683
- Стаж: 18 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 1 раз
- Поблагодарили: 27 раз
На то, что поле session_id используется сразу в двух индексах, один из которых первичный.
Это предупреждение. Забей, второй индекс составной, поэтому иникальность обеспечивается.
Это предупреждение. Забей, второй индекс составной, поэтому иникальность обеспечивается.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
- phpBB 1.4.2
- Сообщения: 52
- Стаж: 18 лет 10 месяцев
-
- Former team member
- Сообщения: 9683
- Стаж: 18 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 1 раз
- Поблагодарили: 27 раз
В нормальных условиях - не критично.
Очистка таблицы сессий производится действительно по отбору через session_time, где оно меньше, чем разница между текущим временем и session_length.
Просто топикстартёр писал о 500 открытых сессиях.
Очистка таблицы сессий производится действительно по отбору через session_time, где оно меньше, чем разница между текущим временем и session_length.
Просто топикстартёр писал о 500 открытых сессиях.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
- phpBB 1.4.2
- Сообщения: 52
- Стаж: 18 лет 10 месяцев
спасибо!
извините за занудство..
у меня 407 записей в таблице _sessions
из них где-то 90% имеют session_user_id = -1 (т.е. гости?)
в свете засилья поисковых ботов и жалобы хостера я как раз сейчас начал разбираться с тем, как бы гостям не выдавать session id (ведь должно же это снизить нагрузку?).
большая таблица _session - чем-то тоже может эту нагрузку вызывать? и если sid от гостей скрыть, то таблица плавно самоочистится?
подскажите - направление мыслей правильное?
извините за занудство..
у меня 407 записей в таблице _sessions
из них где-то 90% имеют session_user_id = -1 (т.е. гости?)
в свете засилья поисковых ботов и жалобы хостера я как раз сейчас начал разбираться с тем, как бы гостям не выдавать session id (ведь должно же это снизить нагрузку?).
большая таблица _session - чем-то тоже может эту нагрузку вызывать? и если sid от гостей скрыть, то таблица плавно самоочистится?
подскажите - направление мыслей правильное?