Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

Сессии

Форум для авторов модов для phpBB 2.0.x.
Textor
phpBB 1.0.0
Сообщения: 4
Зарегистрирован: 17.02.2006 20:34

Сессии

Сообщение Textor »

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

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

Аватара пользователя
Nemo1987
phpBB 2.0.7
Сообщения: 560
Зарегистрирован: 14.02.2006 10:20

Сообщение Nemo1987 »

Textor, посмотри в модах, далее безопастность мод Max sessions

Textor
phpBB 1.0.0
Сообщения: 4
Зарегистрирован: 17.02.2006 20:34

Сообщение Textor »

Я думал, что может кто-нить наизусь знает :)

Аватара пользователя
Nemo1987
phpBB 2.0.7
Сообщения: 560
Зарегистрирован: 14.02.2006 10:20

Сообщение Nemo1987 »

Textor, ага, весь мод?

Аватара пользователя
avm
Former team member
Сообщения: 582
Зарегистрирован: 16.01.2005 10:40
Откуда: Москва

Сообщение 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
Зарегистрирован: 17.02.2006 20:34

Сообщение Textor »

а когда происходит удаление?
p.s. да, именно принцип.

Аватара пользователя
avm
Former team member
Сообщения: 582
Зарегистрирован: 16.01.2005 10:40
Откуда: Москва

Сообщение avm »

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

Или вас все-таки интересует как это сделано именно в phpbb ?
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

Textor
phpBB 1.0.0
Сообщения: 4
Зарегистрирован: 17.02.2006 20:34

Сообщение Textor »

Или вас все-таки интересует как это сделано именно в phpbb ?
Да.

Аватара пользователя
avm
Former team member
Сообщения: 582
Зарегистрирован: 16.01.2005 10:40
Откуда: Москва

Сообщение avm »

Файл includes/sessions.php:
В функции session_pagestart() вызывается функция session_clean() которая делает примерно то что я написал раньше...
выделенный сервер по цене обычного хостинга - менее 150 рублей в месяц
Благодарности принимаются в Яндекс.Деньгах на счет 4100143316948

Slon77
phpBB 1.4.2
Сообщения: 52
Зарегистрирован: 15.06.2006 14:59
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Сообщение Slon77 »

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

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

Изображение

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза

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

На то, что поле session_id используется сразу в двух индексах, один из которых первичный.
Это предупреждение. Забей, второй индекс составной, поэтому иникальность обеспечивается.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Slon77
phpBB 1.4.2
Сообщения: 52
Зарегистрирован: 15.06.2006 14:59
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Сообщение Slon77 »

Спасибо!
Вот Палыч - профессионал! Пишет про предупреждение, а читать приятно! :)
а не подскажите насчет отсутствия индекса "timestamp" - если я правильно понял - поля session_time ?

Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 453 раза

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

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

Просто топикстартёр писал о 500 открытых сессиях.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.

Slon77
phpBB 1.4.2
Сообщения: 52
Зарегистрирован: 15.06.2006 14:59
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Сообщение Slon77 »

спасибо!
извините за занудство..
у меня 407 записей в таблице _sessions
из них где-то 90% имеют session_user_id = -1 (т.е. гости?)
в свете засилья поисковых ботов и жалобы хостера я как раз сейчас начал разбираться с тем, как бы гостям не выдавать session id (ведь должно же это снизить нагрузку?).
большая таблица _session - чем-то тоже может эту нагрузку вызывать? и если sid от гостей скрыть, то таблица плавно самоочистится?
подскажите - направление мыслей правильное?

Аватара пользователя
RedNaxi
Former team member
Сообщения: 916
Зарегистрирован: 21.02.2007 2:05
Откуда: BeBoss.ru
Поблагодарили: 4 раза

Сообщение RedNaxi »

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

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