Новый механизм сессий

В SVN обновил механизм пользовательских сессий. Теперь сессии хранятся в отдельной таблице и содержат данные о последней дате активности пользователя и его IP. Это позволит снять нагрузку с запроса на получения списка онлайн юзеров, который раньше приходилось делать ко всей таблице пользователей.
Также появилась новая фишка — теперь сессия авторизованного юзера обновляется в БД не при каждом запросе к сайту, а с интервалом в 10 минут. Т.е. каждый раз она сохраняется в кеше и каждые 10 минут сбрасывается в БД. Это позволит избавиться от большого числа UPDATE запрос при значительном онлайне пользователей, что должно сказаться на производительности, особенно у обладателей MyISAM, т.к. это engine полностью лочит таблицу при записи в неё.
Надеюсь на вашу помощь в тестирование этого нововведения :)

ЗЫ Забыл добавить, т.к. обновление в БД происходит минимум раз в 10 минут, то при отображении списка онлайн юзеров возможна погрешность в сортировке, которая составляет примерно 10 минут

70 комментариев

avatar
Спасибо, будем тестить
avatar
А смысл?
Оптимизировали там, где это требовалось в последнюю очередь…
avatar
в смысле? вполне нормально
avatar
Это не просто оптимизация, а изменение логики работы. И подход верный. Я так понимаю, эта доработка возникла не просто сама по себе, а потому, что она нужна для других функций. А раз уж сделано, то почему бы не выложить?
avatar
я её не с бухты-барахты придумал, один посещаемый ресурс на ЛС показал узкое место именно в этом месте.
avatar
Ясно. Просто я думал, что тут слабое место — это время загрузки страницы (у лс 0.1-0.3 время, а должно быть 0.03-0.06). Так же я думал, что к таблице с пользователями обращения всёравно идут часто. Например при постройке комментариев или топиков.
Похоже, что я ошибался.
avatar
SVN щас рабочий?
avatar
Вопрос актуальный!:)
avatar
Я пока не тестил, но есть вопрос в тему по ранней версии.
Я работаю с нескольких компьтеров, и при поочередном посещении сайтов на LS приходится логиниться. Это огрешность или фишка безопасности? Если сделано для безопасности — можно вынести этот параметр в конфиг?
avatar
при каждой новой авторизации создается уникальный ключ сессии, поэтому он на каждом компе разный
avatar
пока сложно протестировать, так как не до конца закончена оптимизация БД, например при добавлении топика ошибки, хотелось бы так сказать в более рабочем варианте посмотреть
avatar
Вопрос уже задавался здесь, но без ответа: SVN щас рабочий? Я после релиза 0.3.1 ставил из SVN не помню до какой ревизии в районе 360 — не работало.
avatar
avatar
Все понял Лора:)
avatar
картинка с лётчиком жпг
avatar
Не видит ф-ии

func_array_simpleflip($aAllowData); (User.class.php строка 67)
func_build_cache_keys($aUserId,'user_'); (User.class.php строка 110)

и далее по аналогии.
avatar
всё лежит в SVN
avatar
Всё то всё… только я исправил и добавил все файлы, что там перечислены…
avatar
изменения в function.php были внесены еще раньше, т.е. в прошлых ревизиях
выборочно лучше не нужно накатывать обновления, а то грозит такими неприятностями как эта
avatar
Спасибо, это всё объясняет. Надо бы где-нибудь приписывать об этом…
avatar
Теперь, при желании, можно смело анонимусу давать возможность постить. Кстати не помешало бы, в качестве опции, сохранить и стандартный механизм авторизации. При грамотной настройке хоста, со старым механизмом авторизации, по идее не должно возникать проблем с безопасностью.
  • ALF
  • +2
avatar
один я задумал имиджборду на лс?
avatar
Еретично это как-то однако…
Предложение на такой борде: "… (нужное вписать) залогиньтесь!" Будет иметь буквальный смысл. А что как и залогинется? Страшно даже представить.
avatar
если залогинется, то будет с позором изгнан из армии анонимусов. неймфаг, ололо
avatar
заказал эту доработку себе, тепреь гости и постить могут и коментить (с капчей)
avatar
Неправильные SQL запросы в методах GetCountUsersActive () и GetCountUsersInactive () класса Mapper_User
avatar
ага есть такое. Пофиксил, но пока не коммитил
avatar
После релиза 0.3.1 какие коммиты из SVN можно без проблем ставить и тестить? Или полностью SVN уже рабочая? Хочется знать что можно делать, а что не стоит пока или же вообще лучше ждать следующего релиза.
avatar
да… все таки хочется свн рабочий :/, удобно очень!
avatar
ИМХО, для экспериментов на локальной машине можно юзать что угодно, хоть десяток копий можно поставить. А вот на рабочих сайтах я бы рекомендовал только объявленные релизы ставить.
avatar
Также в ActionMy.class.php при вызове Topic_GetTopicsPersonalByUser() пропущен 1 параметр. Ожидалось 5, а указали 4.
avatar
хм… а в SVN и в методе 4… видимо я что-то упустил
комментарий был удален
avatar
в svn у вас код постоянно поломанный. Почитайте книгу «Непрерывная интеграция». Побольше тестите релизы перед выпуском. Постоянно баги вываливаються всякие. Пишите через тесты что ли.
А вообще спасибо! скрипт у вас шикарный и грамотно написан. Развонялся потому что хочу его же но без багов.
avatar
почитайте зачем нужен SVN и как вести разработку, возможно станет понятно почему в SVN(в trunk) версия не обязана быть рабочей в принципе. Рабочие и протестированные релизы лежат в tags
avatar
возможно ответил резко :) это был ответ очень частый вопрос/претензию — «в svn у вас код постоянно поломанный», который меня уже одолел
avatar
:) Нет уж. Я как раз свое прочитал. В больших конторах тем кто поломал билд в свн цепляют уши на целый день. Или он покупает всему офису пицу. Поломанный Билд — это херово. И про разработку почитать нужно похоже вам. Вы просто неработали никогда в команде — это видно сразу. Могу посоветовать хорошую книгу «Непрерывная интеграция» Поль М. Дюваль. Это класика, такая же как банда четырех. Почитайте. Вы очень сильно гоните беса. Да еще и так уверенно говорите, то чего сами незнаете.
ЗЫ Я вообще в шоке — где вы такое прочитали про SVN? Ссылками на литературу желательно ответьте. Я вот ее прочитал достаточно, да и с свн поработал достаточно. Жду ваших извинений после прочтения книги.
avatar
где говорится, что текущая рабочая версия(trunk) всегда должна быть работоспособной? Вы мне предлагаете методику работы с репозитарием, но методик много, да и отсутствие популярной методики — это тоже своеобразный метод работы. Я исхожу из того, что если я не следую предложенной вами методики — это не значит, что я делаю неправильно.
В команде я работал, в большой и крупной, где были и проектировщики, и составители ТЗ, и разработчики, и тестеры, и нагруз-тестеры и всё завязано по цепочке. Предложенная вами схема делать атомарные коммиты не приводящие к краху сборки — это замечательно и она работала в моей компании. Но работает она ровно до того момента, когда вдруг необходимо вносить существенные изменения в архитектуру/работу приложения, которые не ограничиваются одним днём, одним коммитом и не делятся на атомарные коммиты. такая ситуация сейчас происходит и с ЛС, изменения настолько глобальны, что при первом же коммите они рушат систему, пока не будут внесены все изменения, кторые могут занять не один день. А я не привык растягивать один коммит больше, чем на один день — стараюсь придерживаться принципа: один коммит — одна фитча. Так удобнее делать откаты и т.п.

avatar
товарисч! для этого есть бранчи
avatar
да вы что?!
а еще есть гемморой по их объединению, тем более применительно к ЛС на такой ранней стадии развития делать ответвления — это не рационально.
Что еще вы знаете?
avatar
Валера, Вы наверно на ХабраХабре пересидели? Или Вы из параллельного мира?

Лайв-Стрит вообще-то бесплатная разработка, и Максим Орт, не Вам, не кому либо другому ничего не должен и не чем не обязан! Он сегодня по идее может оценить коробочную версию продукта по 500 у.е и такие советчики как Вы моментом окажутся в своей реальности! ;-)
avatar
Даже если оценит, весь ранее опубликованный код можно продолжать использовать в соответcтвии с gpl. Могу посоветовать хорошую книгу «Непрерывная интеграция» Поль М. Дюваль.
avatar
Если хочешь без багов — бери объявленный релиз (последний 0.3.1) и спи спокойно.
avatar
как раз там бага. карма неувеличиваеться при голосовании за комент.
avatar
А вот это уже в багрепорт: livestreet.ru/blog/bugreport/
И поверьте — от конкретных замечаний по багам пользы будет больше, чем от пикировок, кто каких книг больше прочитал
avatar
а с чего бы она должна увеличиваться? посмотрите как там что в файле подсчёта рейтинга организовано. при голосовании за коммент увеличивается только сила. правда это совсем не для этой темы вопрос
avatar
с чего вы взяли, что это баг? с того, что это работает не так как вам хочется?
при голосовании за коммент рейтинг(карма) не меняется, изменяется только сила, степень изменения зависит от силы голосующего.
avatar
сила тоже неменяеться
avatar
учимся читать:
изменяется только сила, степень изменения зависит от силы голосующего
предлагаю предположить, что голосующий не обладает достаточной силой…
avatar
Эх, нашелся бы еще энтузазист, который расписал бы где-нить, что такое «сила», «рейтинг», от чего они зависят, как считаются и т.д. Для многих это в новинку.
avatar
инструмент для этого есть — livestreet.ru/wiki/ а вот энтузиастов нет (
avatar
Практика показывает — не сделаешь сам — никто не сделает))
avatar
Будешь смеяться — я сам толком не знаю, как это все считается. Я, честно говоря, как-то никогда особо не заморачивался всеми этими цифирьками. Разумеется, приятно, когда тебя плюсуют, но делать из этого самоцель — наф-наф-наф

ЗЫ Пардон за оффтоп
avatar
Плохо в рейтинге то, что порой ты не можешь поставить плюсик достойному человеку) И только.
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
avatar
только что ставил версию из свн в локали.
заметил 2 момента:
1) в svn sql.sql не хватает таблицы prefix_session
2) ругается скрипт при установке на отсутствие папки для /templates/compiled

я справился, просто отмечаю для вас эти моменты ;)
avatar
prefix_session есть в patch.sql
avatar
а пустые папки, вроде «compiled» и «cache» svn не выкачивает…
avatar
При просмотре профиля пользователя «Последний визит» всегда показывает текущую дату.
avatar
случайно не свой профиль смотришь?
avatar
Любой профиль
avatar
Было глупо конечно ставить это на рабочий сайт)) вот посмотри сам fotoshaba.ru/people/
avatar
проверь еще раз всё ли обновилось из свн, чтоб не повторилось это — livestreet.ru/blog/dev_livestreet/1848.html#comment21239
у себя не смог такое воспроизвести
avatar
Хороший вариант — хранить сессии в мемкеше для тех у кого он установлен.
avatar
никто не спорит, здесь немного другое — хранить дату последнего визита на сайт и иметь возможность делать выборку по этой дате
avatar
Согласен, не учел.
комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.