Webstats, API2 | Веб-статистика для хаба |
Здравствуйте, гость ( Вход | Регистрация )
Webstats, API2 | Веб-статистика для хаба |
14.7.2009, 17:15
Сообщение
#361
|
|
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 - отбор пользователей по онлайн
Прикрепленные файлы
Спасибо сказали: Nickolya, intlive, Invisible, mariner, LyaKich, fixx, Lesh™, Otshelnik-Fm, Vizunchik, -=Alexandr=-, truth, HackFresse, Parad0x, KT315, Andrew Frost, Kingston, PSIX, Saymon21, exxxx, Dimon21, SergeySV, TiGRpp, KamoK, Pro009, shmeks, UnFeeLing, DEN 007, Underconstruction, ke(x)one, dj_crazy_joker, мамин_парень |
|
|
12.8.2010, 13:38
Сообщение
#362
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
Тоже самое всё. Только теперь по ссылке даже крестик не рисует, просто чистая страница.
|
|
|
14.8.2010, 17:55
Сообщение
#363
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 3 Регистрация: 30.7.2010 Пользователь №: 7 374 Спасибо сказали: 0 раз |
не могу найти инструкцию установки. Подскажите плз как устанавливать. Стоит денвер, хочется чтоб просто выводил:
=== Пользователей на канале: Общее кол-во расшареный файлов: Рекордсмен по шаре: === Подскажите как установить хотябы, а php сама попробую написать судя из примеров. |
|
|
14.8.2010, 19:16
Сообщение
#364
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Инструкция проста:
1ое - нужен плагин для работы птоки с мускулем 2ое - база данных в мускуле, куда писала бы птока 3е - скрипт stats.lua из архива в папку скриптов хаба 4ое - все остальное из архива на вэбсервер(ну и в конфиге настроить доступ к базе данных). Все! |
|
|
14.8.2010, 21:34
Сообщение
#365
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
PomanoB
Ошибки Notice так и не пропадают... После того как я отделил все скобки в файле pData.class, то ошибка стала указывать на 128 строку вместо 127-ой. Код $ID = 0; for($i=0;$i<=count($this->Data);$i++) { if(isset($this->Data[$i][$Serie])) { $ID = $i+1; } } 128 строка это предпоследняя скобка, вот на неё и выводит ошибку. Код <br /> <b>Notice</b>: Uninitialized string offset: 0 in <b>C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class</b> on line <b>128</b><br /> <br /> <b>Notice</b>: Uninitialized string offset: 1 in <b>C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class</b> on line <b>128</b><br /> �PNG Переводчик мне переводит так: Примечание: Неинициализированные смещения строки: 0 в C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class на линии 128 Примечание: Неинициализированные смещения строки: 1 в C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class на линии 128 А ниже идёт большая абракадабра, видимо там идёт построение графика, но из-за этой ошибки он его не строит. Думаю всё же не в неделях дело. Кто-нибудь вообще сталкивался с этим? |
|
|
14.8.2010, 21:48
Сообщение
#366
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
А все ли {} на месте?
Попробуй предыдущую строку Код if(isset($this->Data[$i][$Serie])) { $ID = $i+1; привести к виду Код if(isset($this->Data[$i][$Serie])) $ID = $i+1;
|
|
|
14.8.2010, 22:12
Сообщение
#367
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
mariner, теперь вот это выводит:
Код Parse error: parse error, expecting `T_FUNCTION' in C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class on line 132 Выложу полный код скрипта на всякий случай: Код <?php /* pData - Simplifying data population for pChart Copyright (C) 2008 Jean-Damien POGOLOTTI Version 1.13 last updated on 08/17/08 http://pchart.sourceforge.net This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 1,2,3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Class initialisation : pData() Data populating methods : ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1) AddPoint($Value,$Serie="Serie1",$Description="") Series manipulation methods : AddSerie($SerieName="Serie1") AddAllSeries() RemoveSerie($SerieName="Serie1") SetAbsciseLabelSerie($SerieName = "Name") SetSerieName($Name,$SerieName="Serie1") + SetSerieSymbol($Name,$Symbol) SetXAxisName($Name="X Axis") SetYAxisName($Name="Y Axis") SetXAxisFormat($Format="number") SetYAxisFormat($Format="number") SetXAxisUnit($Unit="") SetYAxisUnit($Unit="") removeSerieName($SerieName) removeAllSeries() Data retrieval methods : GetData() GetDataDescription() */ /* pData class definition */ class pData { var $Data; var $DataDescription; function pData() { $this->Data = ""; $this->DataDescription = ""; $this->DataDescription["Position"] = "Name"; $this->DataDescription["Format"]["X"] = "number"; $this->DataDescription["Format"]["Y"] = "number"; $this->DataDescription["Unit"]["X"] = NULL; $this->DataDescription["Unit"]["Y"] = NULL; } function ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1) { $handle = @fopen($FileName,"r"); if ($handle) { $HeaderParsed = FALSE; while (!feof($handle)) { $buffer = fgets($handle, 4096); $buffer = str_replace(chr(10),"",$buffer); $buffer = str_replace(chr(13),"",$buffer); $Values = split($Delimiter,$buffer); if ( $buffer != "" ) { if ( $HasHeader == TRUE && $HeaderParsed == FALSE ) { if ( $DataColumns == -1 ) { $ID = 1; foreach($Values as $key => $Value) { $this->SetSerieName($Value,"Serie".$ID); $ID++; } } else { $SerieName = ""; foreach($DataColumns as $key => $Value) $this->SetSerieName($Values[$Value],"Serie".$Value); } $HeaderParsed = TRUE; } else { if ( $DataColumns == -1 ) { $ID = 1; foreach($Values as $key => $Value) { $this->AddPoint(intval($Value),"Serie".$ID); $ID++; } } else { $SerieName = ""; if ( $DataName != -1 ) $SerieName = $Values[$DataName]; foreach($DataColumns as $key => $Value) $this->AddPoint($Values[$Value],"Serie".$Value,$SerieName); } } } } fclose($handle); } } function AddPoint($Value,$Serie="Serie1",$Description="") { if (is_array($Value) && count($Value) == 1) $Value = $Value[0]; $ID = 0; for($i=0;$i<=count($this->Data);$i++) { if(isset($this->Data[$i][$Serie])) $ID = $i+1; } } if ( count($Value) == 1 ) { $this->Data[$ID][$Serie] = $Value; if ( $Description != "" ) $this->Data[$ID]["Name"] = $Description; elseif (!isset($this->Data[$ID]["Name"])) $this->Data[$ID]["Name"] = $ID; } else { foreach($Value as $key => $Val) { $this->Data[$ID][$Serie] = $Val; if (!isset($this->Data[$ID]["Name"])) $this->Data[$ID]["Name"] = $ID; $ID++; } } } function AddSerie($SerieName="Serie1") { if ( !isset($this->DataDescription["Values"]) ) { $this->DataDescription["Values"][] = $SerieName; } else { $Found = FALSE; foreach($this->DataDescription["Values"] as $key => $Value ) if ( $Value == $SerieName ) { $Found = TRUE; } if ( !$Found ) $this->DataDescription["Values"][] = $SerieName; } } function AddAllSeries() { unset($this->DataDescription["Values"]); if ( isset($this->Data[0]) ) { foreach($this->Data[0] as $Key => $Value) { if ( $Key != "Name" ) $this->DataDescription["Values"][] = $Key; } } } function RemoveSerie($SerieName="Serie1") { if ( !isset($this->DataDescription["Values"]) ) return(0); $Found = FALSE; foreach($this->DataDescription["Values"] as $key => $Value ) { if ( $Value == $SerieName ) unset($this->DataDescription["Values"][$key]); } } function SetAbsciseLabelSerie($SerieName = "Name") { $this->DataDescription["Position"] = $SerieName; } function SetSerieName($Name,$SerieName="Serie1") { $this->DataDescription["Description"][$SerieName] = $Name; } function SetXAxisName($Name="X Axis") { $this->DataDescription["Axis"]["X"] = $Name; } function SetYAxisName($Name="Y Axis") { $this->DataDescription["Axis"]["Y"] = $Name; } function SetXAxisFormat($Format="number") { $this->DataDescription["Format"]["X"] = $Format; } function SetYAxisFormat($Format="number") { $this->DataDescription["Format"]["Y"] = $Format; } function SetXAxisUnit($Unit="") { $this->DataDescription["Unit"]["X"] = $Unit; } function SetYAxisUnit($Unit="") { $this->DataDescription["Unit"]["Y"] = $Unit; } function SetSerieSymbol($Name,$Symbol) { $this->DataDescription["Symbol"][$Name] = $Symbol; } function removeSerieName($SerieName) { if ( isset($this->DataDescription["Description"][$SerieName]) ) unset($this->DataDescription["Description"][$SerieName]); } function removeAllSeries() { foreach($this->DataDescription["Values"] as $Key => $Value) unset($this->DataDescription["Values"][$Key]); } function GetData() { return($this->Data); } function GetDataDescription() { return($this->DataDescription); } } ?> Сообщение отредактировал Saymon - 14.8.2010, 22:17
Причина редактирования: Такой большой код лучше прятать под спойлер
|
|
|
14.8.2010, 23:50
Сообщение
#368
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Такое ощущение, что где то лишняя скобка.
Код for($i=0;$i<=count($this->Data);$i++) { if(isset($this->Data[$i][$Serie])) $ID = $i+1; } } Вот в этом кусске убери } последнюю. Она вроде лишняя. Ну я посидет, повтыкал, вроде она. |
|
|
15.8.2010, 0:41
Сообщение
#369
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
mariner, убрал я последнюю скобку, он всё равно зараза опять пишет:
Код <br /> <b>Notice</b>: Uninitialized string offset: 0 in <b>C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class</b> on line <b>128</b><br /> <br /> <b>Notice</b>: Uninitialized string offset: 1 in <b>C:\Program Files\Wamp\www\hubstats\inc\graph\pChart\pChart\pData.class</b> on line <b>128</b><br /> �PNG Опять та 128 строка. Я уже и кэш браузера почистил, безрезультатно. Что неужели никто с этим не сталкивался? |
|
|
22.8.2010, 22:30
Сообщение
#370
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
Проблема остаётся в силе. Думаю мне так и придётся тупо закомментировать ссылки "Статистика" и "Юзербар" раз помочь никто не может. Сам я уже не в силах разобраться в проблеме...
Все кто пользуется данным скриптом выложите пожалуйста свой pData.class может это поможет решить проблему... |
|
|
22.8.2010, 22:56
Сообщение
#371
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
|
|
|
24.8.2010, 17:55
Сообщение
#372
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
Saymon, спасибо, но не помогло. Видимо проблема в сервере или в чём-то либо ещё. Придётся закомментировать ссылки...
|
|
|
24.8.2010, 19:59
Сообщение
#373
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Блин, я не знаю в чем может быть проблема :(
|
|
|
26.8.2010, 22:15
Сообщение
#374
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
WebStats_all.lua:116: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'StrgDC++', '2.21', '<StrgDC++ V:2.21,M:P,H:11/0/0,S:11>')ON DUPLICATE KEY UPDATE' at line 1
просто появилось.. |
|
|
27.8.2010, 9:10
Сообщение
#375
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Попробуй вставить после 116 строчки
local iSlots = tUser.iSlots or 0 а в строчке 124, какой она была до вставки, замени tUser.iSlots на iSlots |
|
|
27.8.2010, 11:15
Сообщение
#376
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
Код local iShareSize = tUser.iShareSize / (1024 * 1024) local iSlots = tUser.iSlots or 0 assert(conn:execute( ("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, tUser.sIP, tUser.sNick, sDescription, tUser.iProfile, sEmail, tUser.iLoginTime, iShareSize, tUser.iHubs, iSlots, tUser.sClient, sClientVersion, sTag))) вот так да? |
|
|
27.8.2010, 13:13
Сообщение
#377
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Ага
|
|
|
27.8.2010, 16:53
Сообщение
#378
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
WebStats_all.lua:117: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'romanov@klan-hub.ru', 1282906887, 126836, 3, 15, 'FlylinkDC++', '(r399)', '<Flyl' at line 1
Код local iShareSize = tUser.iShareSize / (1024 * 1024)
local iSlots = tUser.iSlots or 0 117-> assert(conn:execute( ("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, tUser.sIP, tUser.sNick, sDescription, tUser.iProfile, sEmail, tUser.iLoginTime, iShareSize, tUser.iHubs, iSlots, tUser.sClient, sClientVersion, sTag))) |
|
|
27.8.2010, 17:31
Сообщение
#379
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Хм странно буду разбираться
|
|
|
27.8.2010, 21:27
Сообщение
#380
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
может тебе скопировать инфу этих пользователей?
ведь как я понял скрипт ругается на ихнюю инфу |
|
|
28.8.2010, 10:00
Сообщение
#381
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Давай
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Webstats Веб-статистика для хаба |
33 | Saymon21 | 35 458 | 12.3.2017, 15:29 Посл. сообщение: 000000 | |
От: Webstats От темы с ID: 2193 |
0 | Win32 | 4 770 | 10.11.2009, 6:28 Посл. сообщение: Win32 | |
От: Webstats От темы с ID: 2193 |
0 | mariner | 4 947 | 26.7.2009, 10:44 Посл. сообщение: mariner |
|
Сейчас: 23.11.2024, 1:54 |