|
|
|
|
|
для: Loki
(23.08.2006 в 18:00)
| | >Если вы взяли фрагмент чужого кода, не смогли в нем разобраться и он,как следствие, не работет так, как вам хочется, то из этого, еще ничего не следует.
Поэтому я и пытаюсь получить комментарии и разъяснения от авторов этого кода, чтобы разобраться в логике работы.
Но когда я читаю в инструкции одну информацию:
полная информация сохраняется лишь
за сутки, после чего она подвергается сжатию и помещается в суточные архивные
таблицы.
В форуме вижу другой ответ: В таблице ip данные хранятся за последний месяц.
При этом вижу в этой таблице данные за прошлый месяц, а в архивной - частично за текущий.
Я тут теряюсь в попытке понять логику.
При этом, я использую стандартную, родную функция выбора данных из баз, чтобы получить: статистика кроме сегодняшнего дня берется из архивной таблицы, а текущие сутки из таблицы ip.
Но меня "обвиняют" в том, что: Значит что-то вы напутали и берете данные только из архивной таблицы.
Кроме этого, я пытаюсь выяснить, что будет, если анализ статистики запускать не каждый день, когда полная информация сохраняется лишь за сутки, после чего она подвергается сжатию?
Что если запускать анализ 2-3 раза в месяц? При таком условии можете ли уверенно заявлять: Так что никаких потеряных данных нет?
Или всё же требуется выполнять некие действия ежедневно, для корректной архивации данных? Иначе как можно объяснить по прежнему сохраняющиеся данные в текущей базе за прошлый месяц? И отсутствия их в архивной таблице?
Я это уже задаю вопросы непосредственно по работе PowerCounter, вне связи с моим приложением. | |
|
|
|
|
|
|
|
для: tuder
(23.08.2006 в 14:39)
| | >Потэтому надо
Кому надо и почему "поэтому"?
Если вы взяли фрагмент чужого кода, не смогли в нем разобраться и он,как следствие, не работет так, как вам хочется, то из этого, еще ничего не следует. | |
|
|
|
|
|
|
|
для: Loki
(14.06.2006 в 11:37)
| | >проект некоммерческий, то пишу в большой степени под свои нужды. А мне удобнее чтобы система сбора статистики и ее анализа не пересекались. В этом случае могу курочить систему анализа прямо по живому:)
А всё-таки получается, что эти системы пересекаются. Нигде в описании/документации не оговорено, что требуется ежедневно запускать анализ собранной статистики. Понятно, что написано под свои нужды и постоянно проводится анализ и запуск статистики.
Но сам count.php, имеющий "свой собственный блок кода для коннекта к базе" - не производит указанных действий: "Теперь полная информация сохраняется лишь
за сутки, после чего она подвергается сжатию и помещается в суточные архивные
таблицы. По прошествии недели информация сжимается в недельные таблицы, а по
прошествию месяца в месячные таблицы. Разумеется вся информация, которая не
требуется для выведения отчётов удаляется."
И если система анализа не запускалась,то в "суточной таблице" будет накапливаться и накапливаться данные.
Тем более сейчас уже, это не суточная, а месячная таблица? Но каким образом всё же хранится и архивируется информация - не понятно.
Согласно приведённым дампам - часть потеряна, часть занесена в архивы раньше времени.
Потэтому надо бы или поправить описания, либо доработать алгоритм архивизации при нерегулярном запуске программы анализа. | |
|
|
|
|
|
|
|
для: Loki
(21.08.2006 в 13:44)
| | Прикреплённый дамп смотрели?
Цитирую:
INSERT INTO `system_ip` VALUES("420", "1355377803", "2006-07-22 21:15:17", "6", "opera", "windows");
INSERT INTO `system_ip` VALUES("421", "1432330303", "2006-07-22 21:25:01", "2", "firefox", "windows");
INSERT INTO `system_ip` VALUES("422", "3639556744", "2006-07-23 17:57:14", "2", "msie", "windows");
INSERT INTO `system_ip` VALUES("423", "1360216614", "2006-07-24 07:10:33", "6", "msie", "robot_rambler");
INSERT INTO `system_ip` VALUES("424", "3272364970", "2006-07-24 15:48:53", "2", "msie", "windows");
INSERT INTO `system_ip` VALUES("425", "1209958676", "2006-07-24 21:44:53", "5", "mozilla", "none");
INSERT INTO `system_ip` VALUES("426", "3558934598", "2006-07-25 13:55:57", "6", "firefox", "windows");
INSERT INTO `system_ip` VALUES("427", "1439330645", "2006-07-25 19:30:01", "2", "mozilla", "windows");
|
Это за какой месяц данные в system_ip ?
А вот информация из system_arch_ip - смотрим по порядковым номерам записей...
INSERT INTO `system_arch_ip` VALUES("364", "2006-07-30 23:59:59", "1359298561", "1");
INSERT INTO `system_arch_ip` VALUES("365", "2006-07-30 23:59:59", "2112504245", "1");
INSERT INTO `system_arch_ip` VALUES("366", "2006-07-30 23:59:59", "3274603020", "1");
INSERT INTO `system_arch_ip` VALUES("367", "2006-07-30 23:59:59", "1049457425", "1");
INSERT INTO `system_arch_ip` VALUES("368", "2006-08-01 23:59:59", "1374850558", "1");
INSERT INTO `system_arch_ip` VALUES("369", "2006-08-01 23:59:59", "1209950858", "1");
INSERT INTO `system_arch_ip` VALUES("370", "2006-08-01 23:59:59", "1415450191", "1");
INSERT INTO `system_arch_ip` VALUES("371", "2006-08-02 23:59:59", "1370506090", "1");
INSERT INTO `system_arch_ip` VALUES("372", "2006-08-02 23:59:59", "1049457504", "1");
INSERT INTO `system_arch_ip` VALUES("373", "2006-08-02 23:59:59", "1433580451", "1");
INSERT INTO `system_arch_ip` VALUES("374", "2006-08-02 23:59:59", "1408042406", "1");
INSERT INTO `system_arch_ip` VALUES("375", "2006-08-02 23:59:59", "1439330645", "1");
INSERT INTO `system_arch_ip` VALUES("376", "2006-08-02 23:59:59", "1047068778", "1");
INSERT INTO `system_arch_ip` VALUES("377", "2006-08-03 23:59:59", "1406897237", "2");
INSERT INTO `system_arch_ip` VALUES("378", "2006-08-03 23:59:59", "3282142825", "1");
INSERT INTO `system_arch_ip` VALUES("379", "2006-08-03 23:59:59", "1370506090", "1");
INSERT INTO `system_arch_ip` VALUES("380", "2006-08-03 23:59:59", "1369809302", "1");
INSERT INTO `system_arch_ip` VALUES("381", "2006-08-03 23:59:59", "1360216585", "1");
INSERT INTO `system_arch_ip` VALUES("382", "2006-08-03 23:59:59", "3582071925", "1");
INSERT INTO `system_arch_ip` VALUES("383", "2006-08-04 23:59:59", "1374983517", "1");
INSERT INTO `system_arch_ip` VALUES("384", "2006-08-04 23:59:59", "3562210002", "1");
INSERT INTO `system_arch_ip` VALUES("385", "2006-08-04 23:59:59", "3642185765", "1");
INSERT INTO `system_arch_ip` VALUES("386", "2006-08-04 23:59:59", "1427093229", "1");
INSERT INTO `system_arch_ip` VALUES("387", "2006-08-05 23:59:59", "1415538283", "1");
INSERT INTO `system_arch_ip` VALUES("388", "2006-08-06 23:59:59", "1408103942", "1");
INSERT INTO `system_arch_ip` VALUES("389", "2006-08-06 23:59:59", "3416260903", "1");
INSERT INTO `system_arch_ip` VALUES("390", "2006-08-07 23:59:59", "2887090793", "1");
INSERT INTO `system_arch_ip` VALUES("391", "2006-08-08 23:59:59", "1433695746", "1");
INSERT INTO `system_arch_ip` VALUES("392", "2006-08-09 23:59:59", "1360216614", "1");
INSERT INTO `system_arch_ip` VALUES("393", "2006-08-09 23:59:59", "3264186620", "1");
INSERT INTO `system_arch_ip` VALUES("394", "2006-08-09 23:59:59", "1439330645", "1");
INSERT INTO `system_arch_ip` VALUES("395", "2006-08-09 23:59:59", "1464093996", "1");
INSERT INTO `system_arch_ip` VALUES("396", "2006-08-11 23:59:59", "1374981438", "1");
INSERT INTO `system_arch_ip` VALUES("397", "2006-08-12 23:59:59", "1347958488", "1");
INSERT INTO `system_arch_ip` VALUES("398", "2006-08-12 23:59:59", "1209950858", "1");
INSERT INTO `system_arch_ip` VALUES("399", "2006-08-12 23:59:59", "1374979581", "1");
INSERT INTO `system_arch_ip` VALUES("400", "2006-08-13 23:59:59", "1374979581", "1");
INSERT INTO `system_arch_ip` VALUES("401", "2006-08-13 23:59:59", "1431872140", "1");
INSERT INTO `system_arch_ip` VALUES("402", "2006-08-14 23:59:59", "2112504501", "1");
INSERT INTO `system_arch_ip` VALUES("403", "2006-08-15 23:59:59", "1425147488", "1");
INSERT INTO `system_arch_ip` VALUES("404", "2006-08-15 23:59:59", "1439330645", "1");
INSERT INTO `system_arch_ip` VALUES("405", "2006-08-15 23:59:59", "1370506090", "1");
INSERT INTO `system_arch_ip` VALUES("406", "2006-08-16 23:59:59", "3377426402", "1");
INSERT INTO `system_arch_ip` VALUES("407", "2006-08-16 23:59:59", "1047373624", "1");
INSERT INTO `system_arch_ip` VALUES("408", "2006-08-16 23:59:59", "1441366273", "1");
INSERT INTO `system_arch_ip` VALUES("409", "2006-08-17 23:59:59", "3251358235", "3");
INSERT INTO `system_arch_ip` VALUES("410", "2006-08-17 23:59:59", "1415493506", "1");
INSERT INTO `system_arch_ip` VALUES("411", "2006-08-18 23:59:59", "1422672499", "1");
INSERT INTO `system_arch_ip` VALUES("412", "2006-08-18 23:59:59", "1051013542", "1");
INSERT INTO `system_arch_ip` VALUES("413", "2006-08-18 23:59:59", "3286948982", "1");
INSERT INTO `system_arch_ip` VALUES("414", "2006-08-18 23:59:59", "1346825253", "1");
INSERT INTO `system_arch_ip` VALUES("415", "2006-08-18 23:59:59", "1408098457", "1");
INSERT INTO `system_arch_ip` VALUES("416", "2006-08-19 23:59:59", "3648409353", "1");
INSERT INTO `system_arch_ip` VALUES("417", "2006-08-19 23:59:59", "1435360158", "1");
INSERT INTO `system_arch_ip` VALUES("418", "2006-08-20 23:59:59", "1446619534", "1");
INSERT INTO `system_arch_ip` VALUES("419", "2006-08-20 23:59:59", "1435360192", "1");
|
| |
|
|
|
|
|
|
|
для: tuder
(21.08.2006 в 12:56)
| | Вся статистика кроме сегодняшнего дня берется из архивной таблицы, а текущие сутки из таблицы ip. В таблице ip данные хранятся за последний месяц. Так что никаких потеряных данных нет. | |
|
|
|
|
|
|
|
для: Loki
(21.08.2006 в 10:10)
| | Кстати, нормальное ли это явление, что в system_ip, при такой статистике
<b>Засчитанные хосты
5 2 21 130 373
Хосты
6 2 23 141 425
Засчитанные хиты
5 2 24 155 520
Хиты
6 2 25 161 541</b>
находятся данные ещё за прошлый месяц? См. прикреплённый дамп базы.
Если я меняю в функции запрос
// Запрос на статистику за текущий неархивированный день
// $tmp1 = "putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL 1 DAY";
$tmp1= "TRUE";
|
То статистика резко меняется.
<b>Засчитанные хосты
121 2 137 246 489
Хосты
127 2 144 262 546
Засчитанные хиты
150 2 169 300 665
Хиты
163 2 182 318 698</b>
Это как раз выявляются "потерянные" хиты. Правда, все потерянные теперь попадают в "Сегодня", но общее количество-то становится реальным. | |
|
|
|
|
|
|
|
для: Loki
(21.08.2006 в 10:10)
| | Вот кусок кода, делающий выборку и использующий те функции. Символ в символ с аналогичным куском из hits.php, исключая убранные комментарии и исправленную опечатку.
//запрашиваем данные за текущие сутки
list($hits_total[0],
$hits[0],
$hosts_total[0],
$hosts[0])=show_ip_host_today($tbl_ip);
//запрашиваем данные за вчерашние сутки
list($hits_total[1],
$hits[1],
$hosts_total[1],
$hosts[1]) = show_ip_host($time[1]['begin'],
$time[1]['end'],
$tbl_arch_hits,
$tbl_arch_hits_month);
// запрашиваем данные за остальные периоды и
// прибавляем к ним данные за текущие сутки
for($i=2; $i<5; $i++)
{
list($hits_total[$i],
$hits[$i],
$hosts_total[$i],
$hosts[$i]) = show_ip_host($time[$i]['begin'],
$time[$i]['end'],
$tbl_arch_hits,
$tbl_arch_hits_month);
$hits_total[$i] +=$hits_total[0];
$hits[$i] +=$hits[0];
$hosts_total[$i] +=$hosts_total[0];
$hosts[$i] +=$hosts[0];
}
|
Если в hits.php написано
//запрашиваем данные за текущие сутки
то я считаю, что так оно и есть. И запрашивается именно из текущей базы.
//запрашиваем данные за вчерашние сутки
Это запрашивается из архивной
// запрашиваем данные за остальные периоды и
// прибавляем к ним данные за текущие сутки
как и это.
Вопрос. В какой момент происходит сброс в архив? Когда заходишь в админку/статистику. Так?
Да. Вот оно. Далеко запрятано. В admin/index.php стоит
// Включаем заголовок страницы
include "topcounter.php";
|
Казалось бы чего безобиднее, всего лишь заголовок. Но там
// Устанавливаем соединение с базой данных
require_once("config.php");
require_once("archive.php");
|
Что такое archive.php? О! Это же как раз архивация.
///////////////////////////////////////////////////
// Архивируем информацию в ежедневные таблицы
///////////////////////////////////////////////////
|
Поразмыслив, я теперь предполагаю, что функция show_ip_host_today($tbl_ip)
берёт из system_ip, по умолчанию, данные именно за текущую дату. Не трогая данные за предыдущие даты. Но эти данные ещё не сброшены в архив, так как админку никто не запускал.
В результате получается, что ни в текущей, ни в архивных базах не берётся данные за предыдущие, необработанные числа.
Да, выходит, что так оно и есть. Вот где собака порылась! :-)
// Запрос на статистику за текущий неархивированный день
$tmp1 = "putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL 1 DAY";
|
Спрашивается, зачем здесь ограничивать текущим неархивным днём, если при заходе в статистику всегда, однозначно, будет производится архивация данных? То есть их уже здесь не будет.
НО! А вот если по какой-то причине архивация не произошла, то всё, эти данные учитываться не будут вообще. Так как в архивных их нет, а из текущих они не берутся.
>Значит что-то вы напутали и берете данные только из архивной таблицы.
Так что ошибка - это у вас в логике программы. :-Ъ
Прийдётся править функцию, для работы с PowerImage. | |
|
|
|
|
|
|
|
для: tuder
(21.08.2006 в 07:56)
| | Значит что-то вы напутали и берете данные только из архивной таблицы. | |
|
|
|
|
|
|
|
для: cheops
(18.08.2006 в 12:27)
| | count.php заносит данный в базы.
Когда заходишь в админку, для просмотра статистики, для просмотра хитов используется модуль hits.php
Как, я писал на свой страничке, из этого модуля я выдернул кусок и положил в отдельный файл: functioncounter.php, подключив его обратно к hits.php через include()
<?
///////////////////////////////////////////////////
// Система учёта посещаемости сайта - PowerCounter
// 2003-2006 (C) IT-студия SoftTime (http://www.softtime.ru)
// Поддержка: http://www.softtime.ru/forum/
// Симдянов И.В. (simdyanov@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
// Голышев С.В. (softtime@softtime.ru)
// Левин А.В. (loki_angel@mail.ru)
///////////////////////////////////////////////////
// Функция возвращает массив из трёх переменных:
// количество хостов,
// количество засчитанных хитов и
// общее количества хитов.
// $begin - число дней, которое необходимо вычесть из текущей даты,
// для того чтобы получить начальную точку временного интервала
// $end - число дней, которое необходимо вычесть из текущей даты,
// для того чтобы получить конечную точку воменного интервала
// $id_user - первичный ключ записи таблицы users, соответствующий
// текущему сайту
// $tbl_ip - название таблицы, в которой хранятся IP-адреса
// $tbl_arch_hits - название архивной таблицы
//отсюда и ниже исправления от 11.02.06
function show_ip_host_today($tbl_ip) //изменено 11.02.06 Loki
{
// Запрос на статистику за текущий неархивированный день
$tmp1 = "putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL 1 DAY";
// Общее число хитов
$query_hit_total = "SELECT COUNT(*)
FROM $tbl_ip
WHERE ".$tmp1;
// Засчитанные хиты
$query_hit = "SELECT COUNT(*)
FROM $tbl_ip
WHERE systems!='none' AND
systems NOT LIKE 'robot_%' AND ".$tmp1; //изменено 14.02 Loki
// Подсчитываем число IP-адресов (хостов)
$query_host_total= "SELECT COUNT(DISTINCT ip)
FROM $tbl_ip
WHERE ".$tmp1;
// Подсчитываем число уникальных посетителей за сутки
$query_host = "SELECT COUNT(DISTINCT ip)
FROM $tbl_ip
WHERE systems!='none' AND
systems NOT LIKE 'robot_%' AND ".$tmp1; //изменено 14.02 Loki
// Осуществляем запросы к базе данных
$tot_hit = mysql_query($query_hit_total);
if(!$tot_hit) exit(mysql_error());
$uni_hit = mysql_query($query_hit);
if(!$uni_hit) exit(mysql_error());
$tot_hst = mysql_query($query_host_total);
if(!$tot_hst) exit(mysql_error());
$uni_hst = mysql_query($query_host);
if(!$uni_hst) exit(mysql_error());
// Если запросы выполнениы удачно,
// получаем результат за текущие сутки
$hits_total_today = mysql_result($tot_hit, 0);
$hits_today = mysql_result($uni_hit, 0);
$hosts_total_today = mysql_result($tot_hst, 0);
$hosts_today = mysql_result($uni_hst, 0);
return array($hits_total_today, $hits_today, $hosts_total_today, $hosts_today);
}
function show_ip_host($begin, $end, $tbl_arch_hits, $tbl_arch_hits_month) //изменено 11.02.06 Loki
{
// Обнуляем хиты и хосты
$hosts_total = 0;
$hosts = 0;
$hits_total = 0;
$hits = 0;
/////////////////////////////////////////////////////////////////////////////
// Исходим из таблицы соответствия
// begin end
// сегодня 1 0 - это извлекаем из $tbl_ip //этот фрагмент исключен 11.02.06 Loki
// вчера 2 1 - это извлекаем из $tbl_arch_hits
// неделя 7 0 - это извлекаем из $tbl_arch_hits
// месяц 30 0 - это извлекаем из $tbl_arch_hits
// всё время 0 0 - это извлекаем из $tbl_arch_hits
/////////////////////////////////////////////////////////////////////////////
// Если требуемый интервал затрагивает дни, упакованные в архивную таблицу
// плюс ко всему извлекаем информацию из архивной таблицы $tbl_arch_hits
if($begin != 1 && $begin != 0)
{
// Запрос на статистику за временной интервал определяемый
// параметрами $begin,$end
if($end != 0) $tmp1 = "putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '".($end - 1)."' DAY";
else $tmp1 = "putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '$end' DAY";
if($begin == 0) $tmp2 = "";
else $tmp2 = " AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '".($begin - 1)."' DAY";
// Общее число хитов
$query_hit_total = "SELECT SUM(hits_total)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Засчитанные хиты
$query_hit = "SELECT SUM(hits)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Подсчитываем число IP-адресов (хостов)
$query_host_total= "SELECT SUM(hosts_total)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Подсчитываем число уникальных посетителей за сутки
$query_host = "SELECT SUM(host)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Осуществляем запросы к базе данных
$tot_hit = mysql_query($query_hit_total);
if(!$tot_hit) exit(mysql_error());
$uni_hit = mysql_query($query_hit);
if(!$uni_hit) exit(mysql_error());
$tot_hst = mysql_query($query_host_total);
if(!$tot_hst) exit(mysql_error());
$uni_hst = mysql_query($query_host);
if(!$uni_hst) exit(mysql_error());
// Если запросы выполнениы удачно,
// получаем результат
$hits_total += mysql_result($tot_hit, 0);
$hits += mysql_result($uni_hit, 0);
$hosts_total += mysql_result($tot_hst, 0);
$hosts += mysql_result($uni_hst, 0);
}
// Если требуемый интервал затрагивает дни, упакованные в месячную архивную таблицу
// плюс ко всему извлекаем информацию из архивной таблицы $tbl_arch_hits_month
if($begin == 0 && $end == 0)
{
// Запрос на статистику за временной интервал определяемый
// параметрами $begin,$end
$tmp1 = "putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '$end' DAY";
$tmp2 = "";
// Общее число хитов
$query_hit_total = "SELECT SUM(hits_total)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Засчитанные хиты
$query_hit = "SELECT SUM(hits)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Подсчитываем число IP-адресов (хостов)
$query_host_total= "SELECT SUM(hosts_total)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Подсчитываем число уникальных посетителей за сутки
$query_host = "SELECT SUM(host)
FROM $tbl_arch_hits
WHERE ".$tmp1.$tmp2;
// Осуществляем запросы к базе данных
$tot_hit = mysql_query($query_hit_total);
if(!$tot_hit) exit(mysql_error());
$uni_hit = mysql_query($query_hit);
if(!$uni_hit) exit(mysql_error());
$tot_hst = mysql_query($query_host_total);
if(!$tot_hst) exit(mysql_error());
$uni_hst = mysql_query($query_host);
if(!$uni_hst) exit(mysql_error());
// Если запросы выполнениы удачно,
// получаем результат
$hits_total += mysql_result($tot_hit, 0);
$hits += mysql_result($uni_hit, 0);
$hosts_total += mysql_result($tot_hst, 0);
$hosts += mysql_result($uni_hst, 0);
// Получаем самое старое число из таблицы $tbl_arch_hits,
// всё, что позже берём из таблицы $tbl_arch_hits_month
$select = "SELECT UNIX_TIMESTAMP(MIN(putdate)) AS data FROM $tbl_arch_hits";
$dat = mysql_query($select);
if(!$dat) exit("month ".mysql_error());
if(mysql_num_rows($dat) > 0)
{
$last_date = mysql_result($dat, 0);
$tmp1 = "putdate < '".date("Y-m-01 23:59:59", $last_date)."'";
$tmp2 = "";
// Общее число хитов
$query_hit_total = "SELECT SUM(hits_total)
FROM $tbl_arch_hits_month
WHERE ".$tmp1.$tmp2;
// Засчитанные хиты
$query_hit = "SELECT SUM(hits)
FROM $tbl_arch_hits_month
WHERE ".$tmp1.$tmp2;
// Подсчитываем число IP-адресов (хостов)
$query_host_total= "SELECT SUM(hosts_total)
FROM $tbl_arch_hits_month
WHERE ".$tmp1.$tmp2;
// Подсчитываем число уникальных посетителей за сутки
$query_host = "SELECT SUM(host)
FROM $tbl_arch_hits_month
WHERE ".$tmp1.$tmp2;
// Осуществляем запросы к базе данных
$tot_hit = mysql_query($query_hit_total);
if(!$tot_hit) exit(mysql_error());
$uni_hit = mysql_query($query_hit);
if(!$uni_hit) exit(mysql_error());
$tot_hst = mysql_query($query_host_total);
if(!$tot_hst) exit(mysql_error());
$uni_hst = mysql_query($query_host);
if(!$uni_hst) exit(mysql_error());
// Если запросы выполнениы удачно,
// получаем результат
$hits_total += mysql_result($tot_hit, 0);
$hits += mysql_result($uni_hit, 0);
$hosts_total += mysql_result($tot_hst, 0);
$hosts += mysql_result($uni_hst, 0);
}
}
// Возвращаем результат
return array($hits_total, $hits, $hosts_total, $hosts);
}
?>
|
Этот вновь полученный модуль я использую в своём PowerImage для извлечения из баз (зачем городить своё, если есть готовое?) трёх переменных:
// Функция возвращает массив из трёх переменных:
// количество хостов,
// количество засчитанных хитов и
// общее количества хитов.
После чего я генерирую картинку, где и вывожу эти три числа.
На текущий момент это
Просмотров всего: 527
Просмотров сегодня: 0
Посетителей всего: 411
Уникальных посетителей сегодня: 0
Никакие обновления старнички не помогают "выдернуть" из базы новые значения.
Но если я сейчас зайду на просмотр стастистики, то, во-первых, выижу, что сегодня уже было посещение 2006-08-21 06:48:57 и тут же обновляю страничку со своим примером: вижу
Просмотров всего: 536
Просмотров сегодня: 0
Посетителей всего: 420
Уникальных посетителей сегодня: 0
То есть, запуск просмотра статистики, производит какое-то действие над базами, после чего указанной функции становятся доступны достоверные данные.
Вот и хотелось бы провентилировать, что именно там может происходить? Чтобы мне не зарываться в чужой код, может это известно и лежит на поверхности.
Я понимаю, что базы и программа не предназначалась для использования баз вне собственной системы показа статистики. Но почему бы не предположить, что пользователям захочется воспользоваться результатами работы непосредственно самого счётчика count.php, без обращения к вашей системе статистики? А делая запрос непосредственно к базам и выводя только нужную информацию.
Могу ли я рассказать про ситуацию ещё как-то более подробно? | |
|
|
|
|
|
|
|
для: tuder
(18.08.2006 в 11:51)
| | > 1. Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50
>то заносится Mozilla? Но это уже некорректный подсчёт. :-(
Нет это не так, в этом случае в базу ложиться Opera.
2. Не очень понятно, если честно. | |
|
|
| |
|