Модуль "Кто онлайн" (оптимизация + аякс)

+62
2.57K
Приветствую!

Продолжу тему аякса на сайте рассмотрением одного очень популярного модуля — "Кто онлайн?". Модуль популярный, но очень не оптимизированный.

А вы знаете как он работает? — если кратко, то вот:
1. Получает авторизованных посетителей онлайн (1 запрос)
Проверяет каждого на принадлежность к администраторам (N запросов, по количеству посетителей)
Проверяет не админов на принадлежность к редакторам (N-a запросов, где а — количество админов)
2 Считает гостей онлайн (1 запрос)
3 Считает авторизованных посетителей за сегодня (1 запрос)
Проверяет каждого на принадлежность к администраторам (M запросов, по количеству посетителей)
Проверяет не админов на принадлежность к редакторам (M-b запросов, где b — количество админов)

Если в данный момент на сайте 10 человек онлайн, то получится порядка 40 запросов(а может и больше). Согласитесь, что такое количество запросов к базе данных от одного модуля — это явно перебор. Вариант с кэшированием отпадает — если посетитель зашел на сайт и не попадает сразу в список "онлайн" — то мало толку от такого модуля.

Я переписал запросы в этом модуле — получилось 3 запроса (вместо +40 для хорошо посещаемого сайта) (теперь их количество не зависит от количества юзеров) и добавил возможность обновления через аякс с заданным интервалом.

Установка:
1. распаковать архив
2. раскидать файлы по нужным папкам
3. установить в админке (для проверки работы можете установить его рядом со старым модулем "Кто онлайн" — и показать только админу)
4. Если нужно — поменять период обновления, по умолчанию он равен = 60 секунд(если 0 — обновляться не будет)

1. Ссылка для скачивания.
2. Языковой файл — положить в папку languages/ru/modules/

PS Дизайн блока остался такой же (тестировался на версии 1.9). Замечания, баги и предложения жду в комментариях smile
+2
GarikKR GarikKR 12 лет назад #
Подскажите пожалуйста ,почему у меня вот так показывает?

+3
SJen SJen 12 лет назад #
Дело в кодировке, у вас же сайт на cp1251?
+1
GarikKR GarikKR 12 лет назад #
Ну да.А какя кодировка нужна?UTF8?
+3
SJen SJen 12 лет назад #
Да все верно, cp1251.
у меня то же самое, так и прописано при обновлении контента. Подумаю, что можно сделать.
+1
GarikKR GarikKR 12 лет назад #
Спасибо за отклик,Просто я подумал это у меня что то не то.Спасибо за ваши полезные полезности!
+3
SJen SJen 12 лет назад #
Может я двусмысленно написал
У меня на сайте тоже cp1251 - но отображается все корректно. Вы гляньте, пожалста, файлик update - может там убились сообщения при архивации
+1
GarikKR GarikKR 12 лет назад #
У меня ЗАПОКАЗЫВАЛО!!!!У меня в базе было сравнение cp1251,Я поставил еще и сопоставление
+1
GarikKR GarikKR 12 лет назад #
А нет(((при перезагрузке страницы опять тоже самое,видно новерное когда аякс обновляет тогда становится нормальный вид
+3
SJen SJen 12 лет назад #
Понял, это я не докинул один файлик - сейчас кину (языковой файл)
+3
SJen SJen 12 лет назад #
Уфффф, пропустил языковой файл при публикации - добавил в первый пост, скачайте. Один файлик "mod_whoonline_ajax.php", надо положить в /languages/ru/modules/
+3
SJen SJen 12 лет назад #
отлично)
+1
GarikKR GarikKR 12 лет назад #
Он в архивчике будет?заного перекачать
+1
GarikKR GarikKR 12 лет назад #
Все увидел
+1
GarikKR GarikKR 12 лет назад #
Работает!!!Спасибо огромное.!!
+1
Atid Atid 12 лет назад #
Продолжайте в том же духе,;)
0
FreeLancer FreeLancer 12 лет назад #
Не увидел там пункта: Сегодня были :(
0
SJen SJen 12 лет назад #
в админке посмотрите настройки модуля. Вообще, автоматом ставится показывать кто был сегодня.. Но все-таки.
0
Patriot Patriot 12 лет назад #
То же самое, "Сегодня были" отсутствует...
0
SJen SJen 12 лет назад #
Откройте настройки модуля, проверьте что стоит галочка "Показывать кто был сегодня" и сохраните.
0
Patriot Patriot 12 лет назад #
Стоит галочка, но в модуле "сегодня были" никого нет...
0
SJen SJen 12 лет назад #
попробуйте пересохранить настройки - просто открыть и затем сохранить.
0
Patriot Patriot 12 лет назад #
Странно, теперь появились и работает нормально Но около 20 минут было в модуле пусто. )
0
SJen SJen 12 лет назад #
да есть там один баг при установке)
пересохранение настроек помогает(убрать-поставить флаг и записать).
0
CozaNostra CozaNostra 12 лет назад #

+

+2
SJen SJen 12 лет назад #
У кого не показываются "посетители за сегодня" - откройте в админке настройки модуля, уберите флаг "Показывать кто был сегодня", поставьте обратно и сохраните
0
mrDON mrDON 12 лет назад #
на самом деле да, в инстант очень кривые запросы к базе, у меня на сайте бывает до 30 онлайн и обин мой сайт ложит скрвак. Было бы замечетельно если бы тс пересмотрел и оптимизировал запросы к базе.... Выдь из 40 запросов сделать 3 разработчики инстанта не могли. Автору спс за полезный хак, продолжай в том же духе.
+1
st.Puh st.Puh 12 лет назад #
А вывод поисковых ботов забыли добавит в ваш хак
0
SJen SJen 12 лет назад #
Я переписывал модуль mod_whoonline - по крайней мере в моей версии модуля вывода поисковых ботов не было. Да и, честно говоря, для меня вывод ботов не несет какой-то полезной информации (а для простых юзеров так вообще никакой), только лишний запрос к БД.. Но опционально можно добавить.
0
vitalson9 vitalson9 12 лет назад #
После установки модуля вкладки в профиле пользователя не открываются после отключения модуля всё нормально. Где то конфликтует
0
SJen SJen 12 лет назад #
файл для таймера закинули в includes?
0
джин джин 12 лет назад #
+ Естественно)
0
ByMind ByMind 12 лет назад #
наблюдение:
исправно показывает появление новых пользователей в онлайне, а вот в офф провожает только опосля перезагрузки страницы?
наблюдение верно, или всеже нет?
+1
SJen SJen 12 лет назад #
Неверно в том плане, что "пользователи онлайн" берутся из таблицы cms_online - что там есть, то и отображается. Но если есть сомнения, кидайте сайт - разберемся)

У меня исправно работает на проекте (довольно большая текучка пользователей).
0
ByMind ByMind 12 лет назад #
не
показалось))
0
hydraq hydraq 12 лет назад #
а у меня при включении этого модуля главное меню перестает раскрывать вкладки( видимо стили как то перебивает(
0
SJen SJen 12 лет назад #
сайт в личку если можно
такого не должно быть
0
VonKruger VonKruger 12 лет назад #
Спасибо автору за проделанную работу. Но вот как и в стандартном, почему-то снова не отображается подсветка (цвет) редакторов или модераторов. В нижеприведенном скрине обведенные красным являются модераторами, а почему-то цвет ника не изменен. Может подскажите какое-нибудь решение (в настройках модуля цвета выставлены)
0
SJen SJen 12 лет назад #
Есть небольшой баг. Исправляется просто - зайдите в настройки плагина, уберите флаг "Подсвечивать администраторов и редакторов?" и поставьте заново. После этого сохраните настройки. И все будет работать.

Проблема в том, что настройки по умолчанию некорректно сохранились.
0
VonKruger VonKruger 12 лет назад #
А вот еще вопрос, в коде прописана такая строка
Код PHP:
if (!isset($cfg['color_editor'])) { $cfg['color_editor'] = '#009900'; }
я так понимаю, что эта строка определяет цвет ника редактора, но редактор в разделе "группы" записан как editors, не editor, может ли это влиять на правильность отображения?
0
VonKruger VonKruger 12 лет назад #
уточню в каком файле \modules\mod_whoonline_ajax\module.php
0
SJen SJen 12 лет назад #
Строка в коде указывает цвет по умолчанию для переменной под названием "color_editor" - это никак не связано с какими-то названиями в других местах, это просто внутреннее название переменной в модуле(ее можно было назвать и "tcvet_redaktora" - но я оставил как стандартном модуле). И никак не связано с тем, как определяется что это редактор.

Другими словами - если у вас работала раскраска в старом модуле, то будет работать и в этом. Только для этого нужно протыкать заново флажки в настройках и пересохранить.
0
VonKruger VonKruger 12 лет назад #
К сожалению ни на старом, ни на новом модуле раскраска не работает. Пробовал воспользоваться подсказанным вами способом, результата никакого... Я в печальке :(
0
VonKruger VonKruger 12 лет назад #
И по-моему я еще обнаружил что автообновление не работает на версии 1.7 После обновления страницы, заметил иное расположение в модуле пользователей, и один был онлайн уже как 3 минуты, а это ничего не отобразилось в режиме онлайн.
0
SJen SJen 12 лет назад #
Кидайте сайт в личку если можно. У некоторых была проблема со скриптом - из-за ошибок с другими скриптами не подгружался таймер.
0
VonKruger VonKruger 12 лет назад #
адрес кинул в личку, надеюсь на помощь.
+1
Таня Таня 12 лет назад #
Я модуль этот еще не тестировала, но у меня вопрос к уважаемому разработчику: можно как-то доработать модуль, чтоб "Сегодня были" сделать кликабельным, т.е. чтоб он не отображал сразу список, а при клике на фразу "Сегодня были" раздвигался вниз к примеру, ну и при клике на "Скрыть" например, обратно задвигался?)) А то слишком много место стал занимать этот модуль.
0
SJen SJen 12 лет назад #
Можно, если доберусь - сегодня выложу. Если нет, можете напомнить в личку)

Если еще мысли есть по этому модулю, пишите. Раз уж буду к нему возвращаться, то сразу бы и сделал.
0
Таня Таня 12 лет назад #
ну в принципе то что я описала выше можно и не только для "Сегодня были", ну и для самого "Кто онлайн" сделать. Для тех проектов где очень большая посещаемость это было бы удобно.
В идеале было бы вообще хорошо если бы в админке в настройках модуля можно было выбирать как его отображать - либо сразу развернутый список "Кто онлайн" и списаок "Сегодня были", либо развернуть при клике, (естественно настройка и для одного и для второго списка отдельно) Но это я уже наверное нафантазировала сверх меры)))
0
floppox floppox 12 лет назад #
Почему-то отладка показывает 79 запросов и с одним блоком и со вторым...
0
Нил™ Нил™ 11 лет назад #
Спасибо за модуль. Кто нибубдь сталкивался с тем что периодически при обновлении начинает показывать только гостей а пользователей -0, хотя на сайтеесть авторизованные пользователи. (при обновлении страницы тоже)

Еще от автора

Обновление компонента "Мне нравится"
Приветствую. Закончил версию с исправлением ошибок и багов, всем пользователям обновление выслано на электронку.
Обновление компонента  "Каталог дополнений в админку"
Приветствую. Обновление самого популярного аддона из официального каталога дополнений.
Обновленный парсер Яндекс.Карт
Приветствую Изменения довольно значительны, поэтому имеет смысл оформить их отдельным постом.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.