myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Webstats, API2 | Веб-статистика для хаба

Рейтинг 5 V
PomanoB
сообщение 14.7.2009, 17:15
Сообщение #401


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Название скрипта: WebStats
Версия скрипта: 0.3
Версия API: API 2
Автор: PomanoB
Описание скрипта:
Скрипт предназначен для вывода некоторой информации о хабе на сайт.
Основные функции:
- Вывод общей статистики хаба
- Гибко настраиваемый юзербар с поддержкой анимации: можно выбрать фон, шрифт, анимацию, размер, цвет, текст и координаты надписи/двух надписей
Пример юзербара можно посмотреть у меня в подписи
- RSS с информацией о текущей шаре хаба и количества пользователей
- Список хабов
- Построение диаграммы распределения пользователей по объему шары
- Построение графика распределения пользователей по клиентам
- Топ пользователей по шаре и времени онлайн
- Информация о всех пользователях с удобным поиском
- Поиск по нику, IP, профилю и клиенту
- Индивидуальная расширенная информация о каждом пользователе
- Система шаблонов позволят легко настраивать внешний вид
Файл block.php в папке inc предназначен для вывода информации в центральный блок сайта на главной странице

Пользователям lighttpd нужно подключить lighttpd-hub.conf
Пользователям Apache нужно найти в конфиге AllowOverride и написать там AllowOverride All

Необходимо запускать файл inc/cli.php с нужной периодичностью для обновления информации о хабах
RSS доступно по адресу hubstats/hub<номер_хаба>.xml

Пример работы скрипта можно посмотреть здесь - пример центрального блока
Пример главной страницы статистики - здесь

Небольшое обновление - быстрая сортировка по клику на соответвующей надписи в заголовке таблицы списка пользователей

V 0.1.2.1
- Исправлена ошибка поиска при множестве находимых элементов
- Более удобный поиск по профилю

V 0.2.0
- Переход на XSLT-преобразования
- Отделение графиков от информации о хабе
- Новый дизайн
- Поддержка ланг-файлов
- Новый формат таблицы пользователей
- Изменение поиска
- Устранение багов

v 0.2.0.1
- Оптимизация
- Исправление багов

v 0.2.0.2
- Исправлена ошибка с русскими ссылками

v 0.3
- Переработан юзербар и добавлена возможность анимации юзербара
- Добавлен список хабов
- RSS
- отбор пользователей по онлайн


Прикрепленные файлы
Прикрепленный файл  hubstats.zip ( 4.27 мегабайт ) Кол-во скачиваний: 1140
 
Go to the top of the page
+Quote Post
22 страниц V  « < 19 20 21 22 >  
Начать новую тему
Ответов
Vizunchik
сообщение 14.9.2010, 23:00
Сообщение #402


Постоялец
******

Группа: Пользователи
Сообщений: 403
Регистрация: 4.11.2008
Из: Город Уфа
Пользователь №: 994
Спасибо сказали: 115 раз




Эх эти ошибки
Код
Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0


И да ещё определяет шару Rin 94.41.19.182 UnReg 2.05 Пб.

а на самом деле 2.05 Гб

Прикрепленные файлы
Прикрепленный файл  11.JPG ( 9.93 килобайт ) Кол-во скачиваний: 338
 
Go to the top of the page
+Quote Post
PomanoB
сообщение 15.9.2010, 18:34
Сообщение #403


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Это такая ошибка когда возникает?
Go to the top of the page
+Quote Post
Vizunchik
сообщение 15.9.2010, 19:50
Сообщение #404


Постоялец
******

Группа: Пользователи
Сообщений: 403
Регистрация: 4.11.2008
Из: Город Уфа
Пользователь №: 994
Спасибо сказали: 115 раз




Эту ошибку можно исправить изменив в php.ini
Код
mysql.trace_mode On
на
Код
mysql.trace_mode Off


Я вот не пойму почему он шару не правильно определяет
Go to the top of the page
+Quote Post
PomanoB
сообщение 15.9.2010, 22:09
Сообщение #405


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Когда возникает такая ошибка?
Go to the top of the page
+Quote Post
Nickolya
сообщение 15.9.2010, 22:28
Сообщение #406


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




PomanoB, по некоторым слухам и догадкам, это перепиленный на верли скрипт, так что тут возможно что угодно...
Go to the top of the page
+Quote Post
PomanoB
сообщение 16.9.2010, 8:05
Сообщение #407


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




понятно
Go to the top of the page
+Quote Post
foXDEvil
сообщение 18.9.2010, 16:41
Сообщение #408


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 13.1.2010
Пользователь №: 5 672
Спасибо сказали: 0 раз




Скиньте плиз lua скрипт под verlihub big_smile.gif всю тему переломатил не смог найти :(
Go to the top of the page
+Quote Post
Vizunchik
сообщение 18.9.2010, 16:50
Сообщение #409


Постоялец
******

Группа: Пользователи
Сообщений: 403
Регистрация: 4.11.2008
Из: Город Уфа
Пользователь №: 994
Спасибо сказали: 115 раз




Раскрывающийся текст
Код
-- WebStats v 0.3.0.2 (Версия для VerliHub)

local iTime=20 --время в минутах для обновления

local sHostDB="127.0.0.1"
local sNameDB="verlihub"
local sUserDB=""
local sPassDB=""
local sPrefixTable="ws_"

_G.string.dbformat = function(self, ...)
  local t = {...}
  for k, v in _G.ipairs(t) do
    t[k] = _G.tostring(v):gsub("(['\\\"])", "\\%1")--'"
  end
  return self:format(_G.unpack(t))
end

function Main()
    assert(VH:SQLQuery("SET sql_mode='';"))
    assert(VH:SQLQuery(
("CREATE TABLE IF NOT EXISTS %susers ("..
"ip VARCHAR(16) NOT NULL, "..
"nick VARCHAR(32) NOT NULL, "..
"description VARCHAR(128) NOT NULL, "..
"profile TINYINT NOT NULL, "..
"email VARCHAR(30) NOT NULL, "..
"login_time BIGINT UNSIGNED NOT NULL,"..
"disconnect_time BIGINT UNSIGNED NOT NULL, "..
"online_time BIGINT UNSIGNED NOT NULL, "..
"share_size BIGINT UNSIGNED NOT NULL, "..
"hubs TINYINT UNSIGNED NOT NULL, "..
"slots TINYINT UNSIGNED NOT NULL, "..
"client VARCHAR(15) NOT NULL, "..
"client_version VARCHAR(15) NOT NULL, "..
"tag VARCHAR(32) NOT NULL, "..
"UNIQUE (nick))"):format(sPrefixTable)))
    assert(VH:SQLQuery(
("CREATE TABLE IF NOT EXISTS `%shubs` ("..
  "`id` int(16) unsigned NOT NULL AUTO_INCREMENT,"..
  "`addr` text NOT NULL,"..
  "`port` int(6) unsigned NOT NULL DEFAULT '411',"..
  "`users` int(16) unsigned NOT NULL,"..
  "`share` bigint(20) unsigned NOT NULL,"..
  "`last_online` int(10) unsigned NOT NULL,"..
  "`name` text NOT NULL,"..
  "`online` int(1) unsigned NOT NULL,"..
  "`type` text NOT NULL,"..
  "PRIMARY KEY (`id`))"
):format(sPrefixTable)))

    assert(VH:SQLQuery(
("CREATE TABLE IF NOT EXISTS %sprofiles ("..
"profile_number TINYINT NOT NULL,"..
"profile_name VARCHAR(32) NOT NULL, "..
"UNIQUE (profile_number))"
):format(sPrefixTable)))
    local tProfiles = {"Reg","VIP","OP","Cheef","Master","Master","Master","Master","Master","Admin"}
    local sQSP = ("INSERT INTO %sprofiles (profile_number, profile_name) VALUES "):format(sPrefixTable)
    for i = 0,10 do
        sQSP = sQSP.."("..i..", '"..(tProfiles[i] or "UnReg").."'), "
    end
    sQSP = sQSP.."(-1, 'UnReg') ON DUPLICATE KEY UPDATE profile_name = VALUES(profile_name)"
    assert(VH:SQLQuery(sQSP))

    assert(VH:SQLQuery(
("CREATE TABLE IF NOT EXISTS %shub ("..
"version VARCHAR(16) NOT NULL,"..
"topic VARCHAR(128) NOT NULL,"..
"uptime BIGINT UNSIGNED NOT NULL,"..
"max_user INT UNSIGNED NOT NULL,"..
"user INT UNSIGNED NOT NULL,"..
"ops INT UNSIGNED NOT NULL,"..
"max_share BIGINT UNSIGNED NOT NULL,"..
"share BIGINT UNSIGNED NOT NULL)"
):format(sPrefixTable)))

    local res,cur = VH:SQLQuery(("SELECT * FROM %shub"):format(sPrefixTable))
    local row = VH:SQLFetch(0)
    if not row then
    assert(VH:SQLQuery(
            ("INSERT %shub SET "..
            "uptime = 0,"..
            "max_user = 0,"..
            "user = 0,"..
            "ops = 0,"..
            "max_share = 0,"..
            "share = 0"
            ):format(sPrefixTable)))
    end
end
OnStartup=Main

function isOp(user)
    if GetUsrClass(user) >= 3 then return true end
    return false
end -- проверка на Op -- OP check
function GetCurTopic()
    local _,curtop=VH:GetConfig("config", "hub_desc")
    return curtop or ""
end --получить текущий топик --getting current topic
function GetOPs()
    local UsrTab={}
    local _, OnlineUsers = VH:GetNickList()
    for name in OnlineUsers:gmatch("(%S-)%$%$") do
        if isOp(name)==true then table.insert(UsrTab,name) end
    end
    return UsrTab
end

TimerCount = iTime*60 -- количество секунд для триггера таймера -- Quantity of seconds for the timer trigger
CurrentTickCount = 0 -- счетчик тиков -- The counter of tics
TickIncrement = 1 -- приращение за тик -- Increment for a tic
starttime=os.time()
function VH_OnTimer()
    CurrentTickCount = CurrentTickCount + TickIncrement
    if CurrentTickCount < TimerCount then return end
    CurrentTickCount = 0
    TickIncrement = 0

    local sVersion = '0.9.8e-r2'
    local sTopic = GetCurTopic()
    local iMaxUser
    local iMaxShare
    local _,iUser = VH:GetUsersCount()
    local _,iShare = VH:GetTotalShareSize()
    local iUptime = os.time()-starttime
    local iOps=#GetOPs()
    local res,cur = VH:SQLQuery(("SELECT max_user,max_share FROM %shub"):format(sPrefixTable))
    local _,max_user,max_share = VH:SQLFetch(0)

    iMaxUser = tonumber(max_user)
    iMaxShare = tonumber(max_share)
    
    iShare = iShare / (1024 * 1024)
    
    if iMaxUser < iUser then
        iMaxUser = iUser
    end

    if iMaxShare < iShare then
        iMaxShare = iShare
    end
    
    if not sTopic then
        sTopic = "NO-TOPIC"
    end
        
    assert(VH:SQLQuery(("UPDATE %shub SET "..
"version =  '%s',"..
"topic =  '%s',"..
"uptime =  %d,"..
"max_user =  %d,"..
"user =  %d,"..
"ops =  %d,"..
"max_share = %d, "..
"share =  %d"
):dbformat(sPrefixTable,sVersion,sTopic,iUptime,iMaxUser,iUser,iOps,iMaxShare,iShare)))
    -- cur:close()

    collectgarbage("collect")
    TickIncrement = 1
end --таймер Verlihub --timer

function GetUsrClass(user)
    local ucr, usercl = VH:GetUserClass(user)
    usercl=tonumber(usercl) or 0
    if usercl==-1 then usercl=0 end
    return usercl
end -- получение класса пользователя -- getting user class
function GetIP(user)
    local _,tmpIP = VH:GetUserIP(user)
    return tmpIP or ""
end --получить IP пользователя (строка) --getting user IP
function GetMyInfo(user)
    local _,sMyinfo = VH:GetMyINFO(user)
    return sMyinfo or ""
end --получить полный MyINFO --getting user MyINFO
function GetHubs(user)
    local a1,a2,a3=(GetMyInfo(user) or ""):match("<.-H:(%d+)/(%d+)/(%d+).->")
    return (a1 or 0)+(a2 or 0)+(a3 or 0)
end
function VH_OnUserLogin(user)
    local sEmail = (GetMyInfo(user) or "NONE"):match("%$MyINFO $ALL %S+.-%$.-%$.-%$(.-)%$") or "NONE"
    local sDescription = (GetMyInfo(user) or ""):match("%$MyINFO $ALL %S+ (.-)[<%$]") or ""
    local sClientVersion = (GetMyInfo(user) or ""):match("%$MyINFO $ALL %S+.-<.-V:(%S+)[,%$]") or ""
    local sTag = (GetMyInfo(user) or ""):match("%$MyINFO $ALL %S+.-(<.->)") or ""
    local iShareSize = tonumber((GetMyInfo(user) or ""):match("(%d+)%$$") or 0)

    assert(VH:SQLQuery(
("INSERT INTO %susers ("..
"ip, `nick`, `description`, `profile`, `email`, login_time, share_size, hubs, slots, `client`, `client_version`, `tag`"..
") VALUES ('%s', '%s', '%s', %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s')"..
" ON DUPLICATE KEY UPDATE "..
"`ip` = VALUES(`ip`), `profile` = VALUES(`profile`), `email` = VALUES(`email`), `login_time` = VALUES(`login_time`), "..
"`share_size` = VALUES(`share_size`), `hubs` = VALUES(`hubs`), `slots` = VALUES(`slots`), `client` = VALUES(`client`), `tag` = VALUES(`tag`)"
):dbformat(sPrefixTable, GetIP(user), user, sDescription, GetUsrClass(user), sEmail, os.time(), iShareSize, GetHubs(user), tonumber((GetMyInfo(user) or ""):match("<.-S:(%d+).->") or 0), (GetMyInfo(user) or ""):match("%$MyINFO $ALL %S+.-<(.-)V:%S+") or "???", sClientVersion, sTag)))

    VH:SQLQuery("UPDATE "..sPrefixTable.."users SET "..
"`share_size` = "..iShareSize.." WHERE `nick` LIKE '"..user:gsub("[\\'\"]","\\%1").."'"
) --заплатка


end

function VH_OnUserLogout(user)
    assert(VH:SQLQuery(
("UPDATE %susers SET disconnect_time = %d, online_time = online_time + (disconnect_time - login_time) WHERE nick = '%s'"    
):dbformat(sPrefixTable, os.time() ,user)))
end

на


Спасибо сказали:
Go to the top of the page
+Quote Post
vanga96
сообщение 28.11.2010, 19:17
Сообщение #410


Абсолютный новичок


Группа: Пользователи
Сообщений: 5
Регистрация: 26.10.2010
Пользователь №: 7 959
Спасибо сказали: 0 раз




помогите у меня такая ошибка
Синтаксис C:\Program Files\cshub\scripts\stats.lua:11: module 'luasql.mysql' not found:
no field package.preload['luasql.mysql']
no file 'C:\Program Files\cshub\luasql\mysql.lua'
no file 'C:\Program Files\cshub\libs\luasql\mysql.lua'
no file 'C:\Program Files\cshub\scripts\libs\luasql\mysql.lua'
no file 'C:\Program Files\cshub\luasql\mysql.dll'
no file 'C:\Program Files\cshub\libs\luasql\mysql.dll'
no file 'C:\Program Files\cshub\scripts\libs\luasql\mysql.dll'
no file 'C:\Program Files\cshub\luasql.dll'
no file 'C:\Program Files\cshub\libs\luasql.dll'
no file 'C:\Program Files\cshub\scripts\libs\luasql.dll'
Go to the top of the page
+Quote Post
Saymon21
сообщение 28.11.2010, 19:27
Сообщение #411


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




а библиотеку mysql кто установит?


Спасибо сказали:
Go to the top of the page
+Quote Post
vanga96
сообщение 28.11.2010, 22:06
Сообщение #412


Абсолютный новичок


Группа: Пользователи
Сообщений: 5
Регистрация: 26.10.2010
Пользователь №: 7 959
Спасибо сказали: 0 раз




Цитата(Saymon @ 28.11.2010, 21:27) *
а библиотеку mysql кто установит?

а дай сылку откуда скачать пожалуйста
Go to the top of the page
+Quote Post
Nickolya
сообщение 28.11.2010, 22:09
Сообщение #413


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Mysql, win32 - API 2 | Самая распространённая база данных
Go to the top of the page
+Quote Post
Kingston
сообщение 6.1.2011, 6:10
Сообщение #414


Активный участник
***

Группа: Пользователи
Сообщений: 85
Регистрация: 19.3.2009
Из: Россия, Хабаровский край, г.Комсомольск-на-Амуре
Пользователь №: 2 652
Спасибо сказали: 39 раз




Обновил хаб до 0.4.1.2c. теперь в стате в списке хабов мой хаб отображает кол-во юзеров и шару в двое больше )) а на главной странице статы нормально все.
Go to the top of the page
+Quote Post
PomanoB
сообщение 6.1.2011, 14:28
Сообщение #415


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Весьма странно, попробуй из бд его удалить и заново добавить
Go to the top of the page
+Quote Post
Kingston
сообщение 7.1.2011, 15:22
Сообщение #416


Активный участник
***

Группа: Пользователи
Сообщений: 85
Регистрация: 19.3.2009
Из: Россия, Хабаровский край, г.Комсомольск-на-Амуре
Пользователь №: 2 652
Спасибо сказали: 39 раз




Это что то у меня с хабом, попробую пересобрать.
Go to the top of the page
+Quote Post
Saymon21
сообщение 19.1.2011, 14:59
Сообщение #417


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




Может данная проблема уже решалась но я пропустил как всегда.
После перехода на убунту заметил, что в бд некорректное отображение символов русского алфавита. Хотя в венде было всё нормально.
Лечить так:
В функции OnStartup перед:
Код
assert(conn:execute("SET sql_mode=''"))

Добавляем:
Код
assert(conn:execute("SET NAMES cp1251"))


Спасибо сказали:
Go to the top of the page
+Quote Post
ParKur
сообщение 21.1.2011, 10:54
Сообщение #418


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 15.2.2010
Пользователь №: 6 083
Спасибо сказали: 0 раз




А может кто нибудь скинет ссылку, что бы посмотреть как это выглядит (Web интерфейс).
Go to the top of the page
+Quote Post
Underconstructio...
сообщение 15.3.2011, 16:34
Сообщение #419


Абсолютный новичок


Группа: Пользователи
Сообщений: 6
Регистрация: 28.12.2010
Пользователь №: 8 403
Спасибо сказали: 0 раз




Писал в личку автору,но пока тишина...

Может кто объяснит,как его ставить? На что его ставить?
Короче нужна инструкция beat_brick.gif
Go to the top of the page
+Quote Post
Saymon21
сообщение 15.3.2011, 17:05
Сообщение #420


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




http://ru.wikipedia.org/wiki/Apache
http://ru.wikipedia.org/wiki/MySQL
http://ru.wikipedia.org/wiki/Php
http://mydc.ru/topic1508.html
http://mydc.ru/topic1851.html
Go to the top of the page
+Quote Post
PomanoB
сообщение 15.3.2011, 19:06
Сообщение #421


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




>Писал в личку автору,но пока тишина...
Сорри, хотел ответить да забыл shame.gif

Делай все как Саймон написал
Go to the top of the page
+Quote Post

22 страниц V  « < 19 20 21 22 >
Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsWebstats
Веб-статистика для хаба
33 Saymon21 33 599 12.3.2017, 15:29 Посл. сообщение: 000000
No New Posts От: Webstats
От темы с ID: 2193
0 Win32 4 557 10.11.2009, 6:28 Посл. сообщение: Win32
No New Posts От: Webstats
От темы с ID: 2193
0 mariner 4 758 26.7.2009, 10:44 Посл. сообщение: mariner

 



RSS Сейчас: 19.4.2024, 21:39