yaroslaver
Сен. 9, 2008 06:15:57
Добрый день,
есть сие в природе для Plone3 (или P2)?
пытался в рассылке (на гугле, группа “plone-ru”) узнать - но там похоже все модераторы на морях квасятся и сообщения уже “много времени” не доходят…
так вот, нужен модуль, показывающий кто из зарегистрированных юзеров сейчас на сайте, есть такое в природе? я что-то не нашел…
ну или с чего начать реализацию? муслей нет что-то по этому поводу….
подскажите плз
astoon
Сен. 9, 2008 12:52:29
Я прямо в данную секунду делаю что-то подобное для Zope3 (без Плона). :) В Плоне наверное есть продукт, надо искать.
А делается просто, варанты разные. Например:
1) Событие в формах login и logout
2) Хандлер для этого события, работающий с глобальной утилитой, которая хранит эту инфу.
3) Вьюлет “Кто он-лайн” читающий данную утилиту.
В нем же (или в другом, надо чтоб он был на всех страничках сайта) - берем self.request.principal.id и “обновляем” утилиту.
4) Таймер в этой самой утилите.
astoon
Сен. 9, 2008 13:12:15
Вчерашний анализ исходников и архивов в списках рассылки zope-разработчиков показал, что все предложения вводить в стандартную аутентификацию специальное событие “login the site” были отклонены, так как это большой вопрос - когда юзер зашел на сайт и когда вышел. Аутентификация в Zope3 и в Plone - plagguble, решения разные в разных случаях. Поэтому мое решение - вызывать событие в форме.
Сессии - опять же не всегда используются, у меня в текущих проектах например нет.
Так что, пока думаю, это нормальное решение, а там жизнь покажет.
В Плоне правда использается не PAU, а PAS, глянь в исходники, может там есть событие, хотя наврядли.
yaroslaver
Сен. 10, 2008 02:21:19
Посмотрел кстати, как оно реализовано на всяких пыхыпы-движках…
там есть некая табличка с временем последней активности юзера на странице, т.е. как только чел иыкает в какую-нить ссылку - в эту таблицу пишется время, когда он тыкнул.
а в портлете выводятся те юзеры из этой таблицы, у которых последнее действие было меньше чем N минут назад.
впринципе, простая реализация, но мне почему-то кажется что будет “лишняя” нагрузка на zope при более менее нормальной посещаемости, или вытерпит?
astoon
Сен. 10, 2008 03:37:00
yaroslaver
Посмотрел кстати, как оно реализовано на всяких пыхыпы-движках…
там есть некая табличка с временем последней активности юзера на странице, т.е. как только чел иыкает в какую-нить ссылку - в эту таблицу пишется время, когда он тыкнул.
а в портлете выводятся те юзеры из этой таблицы, у которых последнее действие было меньше чем N минут назад.
так я то же самое и предложил ведь:
astoon
В нем же (или в другом, надо чтоб он был на всех страничках сайта) - берем self.request.principal.id и “обновляем” утилиту.
впринципе, простая реализация, но мне почему-то кажется что будет “лишняя” нагрузка на zope при более менее нормальной посещаемости, или вытерпит?
глупости. откуда кажется ?
yaroslaver
Сен. 10, 2008 03:40:52
эм.. ну… я наверно не силен еще в специальной терминологии… сорри…
а кажется так… на мой взгляд, если “много” челов будет довольно активно ходить по сайту то и запись в таблицу будет идти очень активно… или это незначительная “нагрузка”?
astoon
Сен. 10, 2008 04:47:13
Не вижу что-то какой-либо нарузки.
Обращать внимание следует на сложные вычисляемые вьюлеты когда их много - но - здесь вычисления простые.
Ну а запись вообще незачем в базу данных делать, а просто в глобальную утилиту т.е. синглетон со списком словарей или как-то еще. На пхп это не реализуемо поэтому там наверное в базе таблицу делают специально.
yaroslaver
Сен. 10, 2008 04:53:41
ага, понял… пошел делать ;)
спасибо…