X   Сообщение сайта
(Сообщение закроется через 2 секунды)

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

 
Ответить в данную темуНачать новую тему
> Счетчик, Свой счетчик посещений
Easy-Web
сообщение 2010-08-20, 7:25
Сообщение #1
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Как известно, бесплатные счетчики не позволяют получать развернутую статистику за длительный период. Для этого делаем свой счетчик на основе механизма записи сессий.
Для начала создаем таблицу

CREATE TABLE IF NOT EXISTS `el_hits` (
`date` date NOT NULL,
`shows` int(20) NOT NULL
)

Наиболее эффективно создавать эту таблицу на хостинге NetLevel. Отличительными чертами NetLevel является:
* Полная совместимость с Eleanor CMS и бесплатная установка
* Скидки и специальные акции связанные с Eleanor CMS
* Техническая поддержка 24/7/365

Но если вы уже разместили свой сайт на каком-то другом хостинге, советую как можно быстрее перенести его на NetLevel.

Далее открываем файл class_account.php

Функция KillSessions служит для удаления записей в таблице сессий. Это необходимо для того чтобы не многократно не повторялись записи сессии одного и того же посетителя

Мы слегка доработаем эту функцию, нам надо чтобы она возвращала число удаленных записей.
Заменяем последнюю строчку
$this->Mainclass->Db->Delete('sessions',join(' OR ',$where),__file__,__line__);

на
return $this->Mainclass->Db->Delete('sessions',join(' OR ',$where),__file__,__line__);



Функция AddSession служит для вставки записей в таблицу сессии. Нас интересует фрагмент, где вызывается KillSessions

$this->KillSessions();


вместо этой строчки вставляем блок текста. Не забудьте заменить слово префикс на латиницу. Почему то этот редактор коверкает при сохранении это слово.

//при вызове KillSessions проверяем сколько она удалила:
		if (!$this->KillSessions()) {
//если удалений не производилось, значит посетитель уникальный и его посещение надо зафиксировать.
//Делаем в нашей новой таблице запрос количества посещений за сегодняшнюю дату. 
//Так же будет понятно, добавлялась ли сегодня в эту таблицу запись для их хранения .
			$this->Mainclass->Db->Query('SELECT shows FROM `префикс_hits` WHERE (`date` = "'.date('Y-m-d').'") LIMIT 1',__file__,__line__);
			if($this->Mainclass->Db->Num_rows()==0) {
//Если запись с сегодняшней датой еще не добавлялась, то мы ее добавляем с числом посещений "1".
				$this->Mainclass->Db->Insert(
											'hits',
											array(
													'date'=>date('Y-m-d'),
													'shows'=>'1'
											),
											__file__,
											__line__
				);

			} else {
// Если сегодня уже были добавлены записи, мы получаем количество сегодняшних посещений
				list($shows)=$this->Mainclass->Db->Fetch_row();
//И затем увеличиваем сегодняшние посещения на еденицу 
				$this->Mainclass->Db->Update(
											'hits',
											array(
												'shows'=>($shows+1)
											),
											'(`date` = "'.date('Y-m-d').'") LIMIT 1',
											__file__,
											__line__
				);

			}
		}



Таким образом, при любом исходе, мускул подгружается двумя легенькими запросами, а практически все необходимые предварительные вычисления (например расчет времени жизни сессии и т.п. ) уже заранее предусмотрены в движке.
Подозреваю, что Александр уже готовил подобный код для продажи, а я взял и все испортил и выложил для всех ...

Кому-то может не понравится что я несколько раз вызвал функцию date('Y-m-d') вместо того чтобы один раз записать ее значение в переменную. Это будет вашим домашним заданием, дорогие оптимизаторы кода! Я не люблю переменные, особенно когда их хренова туча.

Еще можно добавить в таблицу индекс для поля data. Я не стал.

Вы спросите, а как же получать отображение статистики? Да никак.

Во первых не хочу мешать Александру, а во вторых за интерфейс заказчик не заплатил и требуют просто статистику в любом виде. Для этого в phpMyAdmin делаю экспорт таблицы в Excel и там рисую графики.

Сообщение отредактировал Zzzhan - 2010-08-20, 10:18
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-08-20, 7:43
Сообщение #2
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Ты бы лучше гостевую выложил! :rolleyes:
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-08-20, 10:22
Сообщение #3
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


А два раза - это для особо тупых? :rofl:
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2010-08-20, 10:22
Сообщение #4
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Случайно получилось два раза - ошибку нашел и правку делал,
Уже удалил.
Скоро выложу, я ее доработать хочу.



Сообщение отредактировал Zzzhan - 2010-08-20, 10:34
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-08-20, 10:25
Сообщение #5
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Да мне и без доработки пойдет! :)
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2010-08-20, 10:35
Сообщение #6
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Цитата (Loader @ 2010-08-20, 13:25)
Да мне и без доработки пойдет! :)

Нехочется сырой продукт выносить на свет

P.S.
Неделю назад оказался весьма кстати заблаговременно скачанный фильм "Я - легенда". Очень удобно смотреть ночью - никому не мешаешь, не надо включать комп или телевизор.
Только для привлечения эплобыдла тебе стоит добавить копию фильма в MP4. Да я и на своем HTC только потому посмотрел, что нестандартный плейер поставил. В стандартном Windwos Media на Windows Mobile 6.1 поддержка только wmv и mp4
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2010-08-20, 12:35
Сообщение #7
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Zzzhan @ 2010-08-20, 10:35)
Неделю назад оказался весьма кстати заблаговременно скачанный фильм "Я - легенда". Очень удобно смотреть ночью - никому не мешаешь, не надо включать комп или телевизор.
Только для привлечения эплобыдла тебе стоит добавить копию фильма в MP4. Да я и на своем HTC только потому посмотрел, что нестандартный плейер поставил. В стандартном Windwos Media на Windows Mobile 6.1 поддержка только wmv и mp4

Так у меня на сайте по этому вопросу всё разжёвано до мелочей: ЗДЕСЬ

Core Player - это же стандарт воспроизведения видео! Крутит даже на слабых машинках (типа моей :) )
А чтобы видео кто-то в стандартном Windows Media смотрел - это лично для меня сенсация :blink:
Насчёт пользователей Айфонов - не думаю что их так уж много, да и сайт изначально для КПК-шек создавался.Видно будет.

Сообщение отредактировал Loader - 2010-08-20, 12:40
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2010-08-20, 13:20
Сообщение #8
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Цитата (Loader @ 2010-08-20, 15:35)
Насчёт пользователей Айфонов - не думаю что их так уж много


Не стоит недооценивать происки Стива Джобса. Созданная им империя ай-придурков скоро захлестнет мир. Быдло так и лезет на эти хреновины.

А насчет CorePlayer, так я его поставил в первые дни покупки КПК. Никакой альтернативы и не существует. Наверно действительно стандарт. Сижу теперь и думаю, нужно ли мне было свои старые клипы и фильмы в mp4 конвертить? Ведь, например, твои Xvid фильмы можно и на DVD-плейере по телеку смотреть Качество позволяет. Пираты, запихивая по 10 фильмов на DVD примерно такое же разрешение ставят (360x288 - четверть кадра DVD). И ведь смотрим же.
Кроме того, фильм весит в три раза меньше - появляется масса других удобств - хранение, быстрота скачивания и т.п.

Тема ушла в другую сторону. Ну и что. Моя тема, о чем хочу о том и говорю.

Напомню, мы говорили о счетчике. Он считает только просмотры. Он не считает клики и пользователей. В моем случае эта статистика достаточна. Для получения дополнительных данных нужны незначительные дополнительные навороты.


Сообщение отредактировал Zzzhan - 2010-08-20, 14:56
Перейти в начало страницы
+Цитировать сообщение
eklips
сообщение 2010-08-20, 14:40
Сообщение #9
Eleanor TEMP USER
Иконка группы

Группа: Eleanor user
Сообщений: 198
Регистрация: 2010-05-19
Версия системы: RC5

Репутация:   нет  
Всего: нет


Спасибо! Нужно будет на днях обязательно попробовать.

Перейти в начало страницы
+Цитировать сообщение
Phoenix84
сообщение 2010-08-20, 14:46
Сообщение #10
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 231
Регистрация: 2010-03-31
Версия системы: RC5

Репутация:   нет  
Всего: нет


Цитата (Zzzhan @ 2010-08-20, 14:20)
Не стоит недооценивать происки Стива Джобса. Созданная им империя ай-придурков скоро захлестнет мир. Быдло так и лезет на эти хреновины. 

Блин, абсолютно согласен. а потом доказывают миру, что ай_огрызок круче всех...
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2010-08-21, 17:14
Сообщение #11
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Билла Гейтса на них нет
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2010-08-23, 10:41
Сообщение #12
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Продолжим. Делаем вывод статистики в файл Excel

Находим в файле class_functions функцию FileMimeType и дополняем ее типом csv, добавляя следующую строчку среди ей подобных:


'csv'		=>'text/csv',


Находим в файле section_general.php (в админке) следующий код

<div id="stab1" class="tabcontent">
<table class="tabstyle">
<tr class="first tabletrline1"><td>'.$lang['stcomm'].'</td><td align="center"><b>'.$comments[1].'</b> ('.$comments[0].')</td></tr>
<tr class="tabletrline2"><td>'.$lang['stuser'].'</td><td align="center"><b>'.$users[1].'</b> ('.$users[0].')</td></tr>
<tr class="tabletrline1"><td>'.$lang['stsite'].'</td><td align="center"><b>'.$sitelife.'</b></td></tr>
<tr class="last tabletrline2"><td>'.$lang['time_on_server'].'</td><td align="center">'.date('Y-m-d H:i:s',$Mainclass->MyTime()).'</td></tr>
///// место вставки кода
</table>


И вставляем в отмеченное место следующий код
<tr class="last tabletrline2"><td>Журнал посещений</td><td align="center"><a href="download.php?counter=1">Скачать</a></td></tr>


заходим в файл download.php (который в корне)
и находим там:

elseif(isset($_GET['captcha']))
{
	$Mainclass->Loadclass('classes/captcha/class_captcha.php');
	$Mainclass->Captcha->GetImage('',$_GET['captcha']);
}
///// место вставки кода
elseif(isset($_GET['download']))


И вставляем в отмеченное место следующий код не забывая как и в первом посте заменить слово "префикс" на "prefix" :

elseif(isset($_GET['counter']) )
{
	if(isset($Mainclass->Login)) {
		if($Mainclass->services[$Mainclass->service_id]['login']==$Mainclass->services[1]['login'])
		{
			$old_service=$Mainclass->service;
			$old_id=$Mainclass->service_id;
			$Mainclass->service='admin';
			$Mainclass->service_id='1';
		}
		$Mainclass->Login->IsUser();
		if ($Mainclass->Permission->IsAdmin()) {
			$counterstream = '';
			$Mainclass->Db->Query('SELECT `date`,`shows` FROM `префикс_hits` ORDER BY `date`',__file__,__line__);
			while (list($date,$shows) = $Mainclass->Db->Fetch_row()) $counterstream .= date('d.m.Y',strtotime($date)).";".$shows."\n";
			Functions::OutputStream($counterstream,'counter.csv');
		} else {
			ExitPage();
		}
	} else {
		ExitPage();
 	}
}


В результате на главной странице админки в статистике получаем ссылку на csv файл статистики, который генерируется из таблицы просмотров. У большинства пользователей он будет открываться в Excel или Open Office . Далее можно будет строить графики.


Сообщение отредактировал Easy-Web - 2010-08-23, 10:50
Перейти в начало страницы
+Цитировать сообщение
Monk
сообщение 2010-12-05, 23:31
Сообщение #13
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 114
Регистрация: 2009-04-12

Репутация:   нет  
Всего: нет


Цитата (Easy-Web @ 2024-03-28 17:38)
Наиболее эффективно создавать эту таблицу на хостинге NetLevel

Из всех высказываний мне это больше всего понравилось!!:sarcastic_hand::rolleyes:
Перейти в начало страницы
+Цитировать сообщение
Easy-Web
сообщение 2011-02-01, 10:20
Сообщение #14
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 132
Регистрация: 2009-08-17
Из: Алма-ата, Казахстан

Репутация:   нет  
Всего: 1


Цитата (Monk @ 2010-12-06, 2:31)
Из всех высказываний мне это больше всего понравилось!!:sarcastic_hand::rolleyes:


Если б они мне еще и заплатили за это, я бы им поэму бы написал... не говоря о слоганах и девизах.

Я на хостинге NetLevel
Разместил мегапортал
И теперь где бы я не был
За него спокоен я

Потому что в этой фирме
Словно звери сервера
Там ведь гении - админы
Технари - проффесора

Забухать хоть на неделю
В отпуск хоть на целый год
Волноваться не придется
Что мой сайтик вдруг помрет






Сообщение отредактировал Easy-Web - 2011-02-01, 10:39
Перейти в начало страницы
+Цитировать сообщение
Sys(3)X
сообщение 2011-02-01, 13:14
Сообщение #15
Eleanor hoster
Иконка группы

Группа: Администраторы
Сообщений: 272
Регистрация: 2008-11-11

Репутация:   нет  
Всего: 10


Цитата (Easy-Web @ 2024-03-28 17:38)
Я на хостинге NetLevel
Разместил мегапортал
И теперь где бы я не был
За него спокоен я

Потому что в этой фирме
Словно звери сервера
Там ведь гении - админы
Технари - проффесора

Забухать хоть на неделю
В отпуск хоть на целый год
Волноваться не придется
Что мой сайтик вдруг помрет


Ну просто шедевр)) Сообщите в личку свой email у нас для бонуса.

Кстати, на эту тему наткнулся перейдя по ссылке в почте со своего iPhone и вдвойне заинтересовался обсуждением :)
Перейти в начало страницы
+Цитировать сообщение
Monk
сообщение 2011-07-20, 14:32
Сообщение #16
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 114
Регистрация: 2009-04-12

Репутация:   нет  
Всего: нет


Цитата (Easy-Web @ 2011-02-01, 11:20)
Словно звери сервера
 

Сервера, может быть, и звери, да работают медленно ;)

Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-21, 16:24
Сообщение #17
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Monk @ 2024-03-28 17:38)
Сервера, может быть, и звери, да работают медленно

Так звери-то разные бывают...ленивцы например :sarcastic_hand:

Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0396 сек.    12 запросов    GZIP включен    Сейчас: 2024-03-28, 17:38