Виджет “Кто в онлайн” на PHP, MySQL & jQuery. Часть 2

Шаг 4 — PHP

Именно здесь творятся чудеса. PHP должен сохранять базу данных пользователей онлайн соответственно времени их пребывания на сайте и использовать их IP-данные о местоположении из API Hostip's. Потом, все это кэшируется для будущего использования в cookie на ПК пользователей.

who-is-online/online.php

Этот PHP скрипт вызывается с помощью jQuery, чтобы создать необходимое количество Div-ов в соответствии с текущим числом посетителей онлайн. Однако, за кулисами, этот скрипт записывает IP посетителя в базу данных и выдает его местоположение на основе IP адреса.

Использование jQuery — есть самая лучшая стратегия для данного виджета, потому что время исполнения скрипта очень «дорого».

Другой метод работы скрипта заключается в том, чтобы хранить в БД только IP-адреса посетителей, а Geo данные вызывать при показе панели. Это означает, что количество посетителей онлайн, влияет на время работы скрипта, так как пришлось бы за один показ панели обрабатывать необходимое количество IP-адресов. А это не хорошо).

Вы можете посмотреть на работу API, набрав в командной строке: http://api.hostip.info/?ip=128.128.128.128. Запрос вернет XML документ, который содержит все типы данных, включая страну и город, имя, связанное с IP, аббревиатуру страны и даже абсолютные координаты. Мы извлекаем данные из XML с помощью PHP функции file_get_contents () и получаем нужные данные.

who-is-online/geodata.php

Geodata.php вызывается через jQuery для создания выдвижной панели с данными о местоположении. В этом файле выполняется один запрос к базе данных, в котором данные о посетителях группируются по странам, в порядке убывания популярности страны (с наибольшим онлайн к наименьшему)

Для иконок флагов стран, мы используем сервис FAMFAMFAM. Потрясающей вещью в Hostip API, является то, что она возвращает код страны в стандартном двухбуквенном формате, который как раз поддерживается сервисом FAMFAMFAM. Это означает, что мы избавляемся от циклов перебора иконок флагов.

Шаг 5 — jQuery

JavaScript управляет AJAX запросами и выдвижением панели. Это будет непростой задачей с чистым JS, и именно поэтому мы используем новейшие версии библиотеки jQuery.

Теперь давайте взглянем на то, как выглядит код.

who-is-online/widget.js

Вы может быть несколько озадачены использованием в меню SetTimeout. Это делается для того, чтобы подождать пока откроется панель. Таким образом, непреднамеренное перемещение курсора мыши на виджете, не будет прерывать событие открытия панели, и как только открыли, не будет ее закрывать, если курсор мыши покинет панель.

Виджет готов!

Пример

На этом этапе вы, вероятно, захотите поставить виджет к себе на сайт. Для того, чтобы виджет работал, вам необходимо выполнить SQL код из table.sql в архиве. SQL скрипт создаст таблицу tz_who_is_online, которая используется в виджете.

Потом вы должны загрузить файлы на сервер и прописать widget.js в разделе head страницы (вместе с библиотекой jQuery). После этого, вы должны заполнить данные доступа к MySQL базе в connect.php и, наконец, добавить разметку из demo.html в Вашу веб-страницу.

Скачать архив с примером

Выводы

Иметь доступ к данным онлайн посетителей сайта — это мечта любого веб-мастера. Такие инструменты, как Google Analytics представляют такой функционал Вашему сайту, но отсутствие данных реального времени несколько отталкивает и делает наш виджет очень привлекательным и интересным.

Что вы думаете на счет кода? Как бы вы его изменили? Что бы еще добавили?


3 комментарий на “Виджет “Кто в онлайн” на PHP, MySQL & jQuery. Часть 2

  1. AJAX я не учил, а вот про php могу сказать что делается все проще и быстрее. База данных тут совсем не нужна, кто онлайн, проверяем через файлы сессий, которые хранятся на web-сервере. Все просто, получаем дату последнего обновления сессии, если она меньше 1-3 минут, то посетитель на сайте, если нет, то нет. :-). AJAX можно прикрутить.

Оставить комментарий