- Статистика от кога да кога е бил онлайн потребителя
12
WT форуми -> PHP MySQL ASP.NET -> Статистика от кога да кога е бил онлайн потребителя
Създайте нова тема Напишете отговор 
Автор Съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 25/10/2017 9:58 pm     Статистика от кога да кога е бил онлайн потребителя Отговорете с цитат


Здравейте,
трябва да направя статистика за това дадени потребители колко време са онлайн в сайта (администратори и модератори).
Като това ще се пази и и няма да се трие ден за ден.
Дали заради късния час или тилкоз ми е акъла не знам, но някак не мога да си го представя как да го покажа нагледно и дори как да записвам статистиката.

Засега ми се върти в главата нещо подобно:
https://docs.servicenow.com/bundle/geneva-performance-analytics-and-reporting/page/use/basic_reporting/image/BarChart.png
където Х ще са дните (месец/седмица/6 месеца...) а Y 24 часов диапазон.
И да оцветявам Y часовете на активност. Това ми се вижда ок за един потребител, но как ще стане да ги покажа всички заедно за да се види в кои часове няма активност?

Също така и самото записване в базата на тия часове на активност не се сщам как да стане.


Засега съм измислил това -ако засечем потребител че е онлине записвам нов запис:
SQL code:
Insert (user_id, time_on, is_activ) .. (1, 68798676, 1)

и на всеки ХХ минути проверявам кои са онлине и евентуално вече тоя потребител с флаг is_activ = 1 не е онлайн, ъпдейтвам записа с времето сега ( time_off = time()/datetime ) и сменям на is_activ = 0
за следващо идване онлайн правим нов запис и тн.

Всякакви идеи и съвети ще са добре дошли.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 246
Мнение 26/10/2017 7:44 am      Отговорете с цитат


Хубава идея си замислил но това няма ли да е тежък метод които ще товари сървъра.

Защо просто не ползваш сесията колко време е логнат Smile

$_SESSION['loggedtime'] = new DateLoginTime(date('y-m-d h:m:s'));

$difftime= $_SESSION['loggedtime']->diff(new DateLoginTime(date('y-m-d h:m:s')));





Виж тук: http://php.net/manual/en/datetime.diff.php


Ето друг метод:

$_SESSION ['loggedtimer'] = time();
$timerLongLogged =( time () - $_SESSION ['loggedtimer']) /60;


Ако съм те разбрах правилно искаш аналитикс за логнати потребители.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
n641951363
Нов
Нов

Регистриран на: 29/08/2017 2:35 pm

Support: 3
Bonus: 6
Мнения: 28
Мнение 26/10/2017 8:07 am      Отговорете с цитат


Ок. Дай да оставим визуализацията за момента на страна и първо да се справим с проблема с това кой е онлайн.

Предлагам следното като решение

При създаване на сесията записваш timestamp в базата данни и в сесията
при рефреш или ако смяна на view-то първото което правиш е да
сравниш текущият timestamp с този в сесията и ако разликата е по-малка от 15 мин. (примерно) и повече от 5 мин. то ъпдейтваш записа в базата

ако е повече от 15мин създаваш нов

нека да видим как би трябвало да ни изглежда табличката

SQL code:
CREATE TABLE `online` (
`id` int(11) NOT NULL,
`name` varchar(64) NOT NULL,
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


така вече имаме някаква примерна таблица
нека да видим стъпка по стъпка какво трябва да става

1. Потребителя се логва
- Към сесията записваме timestamp
- Нов запис към базата данни

2. Потребителя цъка по сайта
- Проверяваме дали са минали повече от 5мин. от последният timestamp в сесията
ако не са минали не правим нищо

3. Потребителя продължава да си цъка по сайта но вече са минали 5 мин от timestamp-а в сесията
- записваме новият timestamp в сесията
- Ъпдейтваме "end_time" с новият timestamp

4. Потребителя пак се цъка някъде и виждаме че от timestamp-а в сесията са минали повече от 15 мин
- Връщаме се на първа точка и я изпълняваме

така в крайна сметка за всеки потребител ще правиш по 1 query в базата на всеки 5 мин за да не се натоварва излишно
и като резултат ще имаш база в която ще се вижда кой, кога и калко време е бил online (+- 5мин)
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 26/10/2017 11:26 am      Отговорете с цитат


Опа, сесии няма как да позлваме.
Не става дума за типичен сайт.
Имаме скрипт който ни връща ид-та на потребителите онлайн всяка минута и според ид-то трябва да се действа.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
n641951363
Нов
Нов

Регистриран на: 29/08/2017 2:35 pm

Support: 3
Bonus: 6
Мнения: 28
Мнение 26/10/2017 12:05 pm      Отговорете с цитат


heytar написа:
Опа, сесии няма как да позлваме.
Не става дума за типичен сайт.
Имаме скрипт който ни връща ид-та на потребителите онлайн всяка минута и според ид-то трябва да се действа.


логиката е същата
махаш сесията и питаш дб-то
има ли запис на този acc_id с време под 5/15 мин и деистваш

разбирасе базата ще се товари повечко
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 26/10/2017 4:04 pm      Отговорете с цитат


n641951363 написа:
heytar написа:
Опа, сесии няма как да позлваме.
Не става дума за типичен сайт.
Имаме скрипт който ни връща ид-та на потребителите онлайн всяка минута и според ид-то трябва да се действа.


логиката е същата
махаш сесията и питаш дб-то
има ли запис на този acc_id с време под 5/15 мин и деистваш

разбирасе базата ще се товари повечко

Записването е готово, остава визуализирането сега.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 246
Мнение 26/10/2017 8:05 pm      Отговорете с цитат


https://canvasjs.com/php-charts/
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 26/10/2017 8:13 pm      Отговорете с цитат


novakabg написа:
https://canvasjs.com/php-charts/

Може ли пример как ще стане това:
https://i.imgur.com/cKvDj9J.png
Y го разпъваме на 100% или инак казано 24 часа и да можем да оцветим само част от него в черно както е на снимката?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 246
Мнение 27/10/2017 1:15 pm      Отговорете с цитат


Какво ? Ти разбираш ли от графики или го правиш да изглежда хубаво Smile
Това черното не разбрах за какво е ?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 27/10/2017 3:24 pm      Отговорете с цитат


novakabg написа:
Какво ? Ти разбираш ли от графики или го правиш да изглежда хубаво Smile
Това черното не разбрах за какво е ?

А ти четеш ли какво се търси!?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
novakabg
Турист
Турист

Регистриран на: 13/05/2016 2:29 pm

Support: 5
Bonus: 10
Мнения: 246
Мнение 27/10/2017 4:39 pm      Отговорете с цитат


Разбрах просто логикатати няма смисъл грам Smile, правя такива charts от 3/4 години, работех за chair8media и там ми се налагаше да изгатвям статистики.
Попитах те какво искаш да ни обясниш със това,
Y го разпъваме на 100% или инак казано 24 часа
кое е това Y и как така го разпъваш за 24 часа!

Виж линка тук:
https://www.google.bg/search?biw=1920&bih=974&tbm=isch&sa=1&ei=CEXzWZLhGs3LwQLm2p2IAg&q=Reporting+on+Active+Directory+User+Logon+Activity&oq=Reporting+on+Active+Directory+User+Logon+Activity&gs_l=psy-ab.3...18800.18800.0.18941.1.1.0.0.0.0.94.94.1.1.0....0...1.1.64.psy-ab..0.0.0....0.eYAXuA5kM4w
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
heytar
Нов
Нов

Регистриран на: 29/06/2015 9:28 am

Support: 0
Bonus: 0
Мнения: 59
Мнение 27/10/2017 4:52 pm      Отговорете с цитат


novakabg написа:
Разбрах просто логикатати няма смисъл грам Smile, правя такива charts от 3/4 години, работех за chair8media и там ми се налагаше да изгатвям статистики.
Попитах те какво искаш да ни обясниш със това,
Y го разпъваме на 100% или инак казано 24 часа
кое е това Y и как така го разпъваш за 24 часа!

Виж линка тук:
https://www.google.bg/search?biw=1920&bih=974&tbm=isch&sa=1&ei=CEXzWZLhGs3LwQLm2p2IAg&q=Reporting+on+Active+Directory+User+Logon+Activity&oq=Reporting+on+Active+Directory+User+Logon+Activity&gs_l=psy-ab.3...18800.18800.0.18941.1.1.0.0.0.0.94.94.1.1.0....0...1.1.64.psy-ab..0.0.0....0.eYAXuA5kM4w

Искам да изведа каква част от деня е нямало активност. Отказах се да записвам всеки отделен потребител и статистиката е обща:
Статистика от кога да кога е бил он
Съответно искам да мога да изведа за последния месец една проста графика за всеки ден да показва от колко до часа е имало активност
Статистика от кога да кога е бил он
В червено е нямало активност, зелено съответно е имало.
Аз затова се сещам, ако има по-добър начин казвайте.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
12
Страница 1 от 2


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети