Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Сессии

Форум для авторов модов для phpBB 2.0.x.
Textor
phpBB 1.0.0
Сообщения: 4
Стаж: 18 лет 1 месяц

Сессии

Сообщение Textor »

при визите юзера на сайт, в phpbb_sessions вносится новая запись с уникальным session_id.

Если 500 юзеров зайдут на сайт по одному разу и больше не вернутся, то не будут же их session_id захлямлять базу. Как от устаревших id избавились разработчики phpbb ?
Последний раз редактировалось Textor 18.02.2006 22:14, всего редактировалось 1 раз.
Аватара пользователя
Nemo1987
phpBB 2.0.7
Сообщения: 560
Стаж: 18 лет 1 месяц

Сообщение Nemo1987 »

Textor, посмотри в модах, далее безопастность мод Max sessions
Textor
phpBB 1.0.0
Сообщения: 4
Стаж: 18 лет 1 месяц

Сообщение Textor »

Я думал, что может кто-нить наизусь знает :)
Аватара пользователя
Nemo1987
phpBB 2.0.7
Сообщения: 560
Стаж: 18 лет 1 месяц

Сообщение Nemo1987 »

Textor, ага, весь мод?
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение avm »

Textor вам принцип изложить? Если да, то:
Удаляем все записи у которых timestamp - NOW() > 600 (период жизни сессии)
Если юзер пришел с имеющимся SID (в cookie или GET), то пытаемся апдейтить запись этого sidа в базе, при этом изменяется ее timestamp...
Если апдейт неудался ($db->sql_query == ok && $db->sql_affectedrows < 1) то сид у этого юзера - устаревший, значит в "гости" его.

Дальше я думаю уже не нужно продолжать...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Textor
phpBB 1.0.0
Сообщения: 4
Стаж: 18 лет 1 месяц

Сообщение Textor »

а когда происходит удаление?
p.s. да, именно принцип.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение avm »

Удаление может происходить до всех действий с sid для всех записей у который timestamp отличается от текущего времени на длительность сессии...
При этом нужно чтобы поле timestamp было проиндексировано (иначе перебор записей начнется и база напряжет хостера)

Или вас все-таки интересует как это сделано именно в phpbb ?
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Textor
phpBB 1.0.0
Сообщения: 4
Стаж: 18 лет 1 месяц

Сообщение Textor »

Или вас все-таки интересует как это сделано именно в phpbb ?
Да.
Аватара пользователя
avm
Former team member
Сообщения: 582
Стаж: 19 лет 2 месяца
Откуда: Москва

Сообщение avm »

Файл includes/sessions.php:
В функции session_pagestart() вызывается функция session_clean() которая делает примерно то что я написал раньше...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948
Slon77
phpBB 1.4.2
Сообщения: 52
Стаж: 17 лет 9 месяцев
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Сообщение Slon77 »

avm писал(а):При этом нужно чтобы поле timestamp было проиндексировано (иначе перебор записей начнется и база напряжет хостера)

Или вас все-таки интересует как это сделано именно в phpbb ?
Простите, а под timestamp'ом имеется в виду поле session_time таблицы _sessions?
у меня в этой таблице стоят следующие индексы. На что ругается?

Изображение
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 10 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза
Контактная информация:

Сообщение Палыч »

На то, что поле session_id используется сразу в двух индексах, один из которых первичный.
Это предупреждение. Забей, второй индекс составной, поэтому иникальность обеспечивается.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Slon77
phpBB 1.4.2
Сообщения: 52
Стаж: 17 лет 9 месяцев
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Сообщение Slon77 »

Спасибо!
Вот Палыч - профессионал! Пишет про предупреждение, а читать приятно! :)
а не подскажите насчет отсутствия индекса "timestamp" - если я правильно понял - поля session_time ?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 10 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза
Контактная информация:

Сообщение Палыч »

В нормальных условиях - не критично.
Очистка таблицы сессий производится действительно по отбору через session_time, где оно меньше, чем разница между текущим временем и session_length.

Просто топикстартёр писал о 500 открытых сессиях.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Slon77
phpBB 1.4.2
Сообщения: 52
Стаж: 17 лет 9 месяцев
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Сообщение Slon77 »

спасибо!
извините за занудство..
у меня 407 записей в таблице _sessions
из них где-то 90% имеют session_user_id = -1 (т.е. гости?)
в свете засилья поисковых ботов и жалобы хостера я как раз сейчас начал разбираться с тем, как бы гостям не выдавать session id (ведь должно же это снизить нагрузку?).
большая таблица _session - чем-то тоже может эту нагрузку вызывать? и если sid от гостей скрыть, то таблица плавно самоочистится?
подскажите - направление мыслей правильное?
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 17 лет 1 месяц
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Сообщение RedNaxi »

Чисто теоретически любому посетителю вашего сайта открывается сессия. можно просто не заводить на него запись в таблице, но тогда невозможно будет отследить где в данный момент находятся гости, их ип и другие данные, которые храняться в этой таблице.
Закрыто

Вернуться в «Для авторов (phpBB 2.0.x)»