Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Про PowerImage 1.0 для PowerCounter

Сообщения:  [1-10]    [11-20]  [21-30] 

 
 автор: tuder   (24.08.2006 в 06:33)   письмо автору
 
   для: Loki   (23.08.2006 в 18:00)
 

>Если вы взяли фрагмент чужого кода, не смогли в нем разобраться и он,как следствие, не работет так, как вам хочется, то из этого, еще ничего не следует.

Поэтому я и пытаюсь получить комментарии и разъяснения от авторов этого кода, чтобы разобраться в логике работы.

Но когда я читаю в инструкции одну информацию:
полная информация сохраняется лишь
за сутки, после чего она подвергается сжатию и помещается в суточные архивные
таблицы.

В форуме вижу другой ответ: В таблице ip данные хранятся за последний месяц.

При этом вижу в этой таблице данные за прошлый месяц, а в архивной - частично за текущий.
Я тут теряюсь в попытке понять логику.

При этом, я использую стандартную, родную функция выбора данных из баз, чтобы получить: статистика кроме сегодняшнего дня берется из архивной таблицы, а текущие сутки из таблицы ip.

Но меня "обвиняют" в том, что: Значит что-то вы напутали и берете данные только из архивной таблицы.

Кроме этого, я пытаюсь выяснить, что будет, если анализ статистики запускать не каждый день, когда полная информация сохраняется лишь за сутки, после чего она подвергается сжатию?
Что если запускать анализ 2-3 раза в месяц? При таком условии можете ли уверенно заявлять: Так что никаких потеряных данных нет?

Или всё же требуется выполнять некие действия ежедневно, для корректной архивации данных? Иначе как можно объяснить по прежнему сохраняющиеся данные в текущей базе за прошлый месяц? И отсутствия их в архивной таблице?

Я это уже задаю вопросы непосредственно по работе PowerCounter, вне связи с моим приложением.

   
 
 автор: Loki   (23.08.2006 в 18:00)   письмо автору
 
   для: tuder   (23.08.2006 в 14:39)
 

>Потэтому надо
Кому надо и почему "поэтому"?
Если вы взяли фрагмент чужого кода, не смогли в нем разобраться и он,как следствие, не работет так, как вам хочется, то из этого, еще ничего не следует.

   
 
 автор: tuder   (23.08.2006 в 14:39)   письмо автору
 
   для: Loki   (14.06.2006 в 11:37)
 

>проект некоммерческий, то пишу в большой степени под свои нужды. А мне удобнее чтобы система сбора статистики и ее анализа не пересекались. В этом случае могу курочить систему анализа прямо по живому:)

А всё-таки получается, что эти системы пересекаются. Нигде в описании/документации не оговорено, что требуется ежедневно запускать анализ собранной статистики. Понятно, что написано под свои нужды и постоянно проводится анализ и запуск статистики.

Но сам count.php, имеющий "свой собственный блок кода для коннекта к базе" - не производит указанных действий: "Теперь полная информация сохраняется лишь
за сутки, после чего она подвергается сжатию и помещается в суточные архивные
таблицы. По прошествии недели информация сжимается в недельные таблицы, а по
прошествию месяца в месячные таблицы. Разумеется вся информация, которая не
требуется для выведения отчётов удаляется."


И если система анализа не запускалась,то в "суточной таблице" будет накапливаться и накапливаться данные.

Тем более сейчас уже, это не суточная, а месячная таблица? Но каким образом всё же хранится и архивируется информация - не понятно.
Согласно приведённым дампам - часть потеряна, часть занесена в архивы раньше времени.

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

   
 
 автор: tuder   (22.08.2006 в 07:32)   письмо автору
 
   для: 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");

   
 
 автор: Loki   (21.08.2006 в 13:44)   письмо автору
 
   для: tuder   (21.08.2006 в 12:56)
 

Вся статистика кроме сегодняшнего дня берется из архивной таблицы, а текущие сутки из таблицы ip. В таблице ip данные хранятся за последний месяц. Так что никаких потеряных данных нет.

   
 
 автор: tuder   (21.08.2006 в 12:56)   письмо автору
 
   для: 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>

Это как раз выявляются "потерянные" хиты. Правда, все потерянные теперь попадают в "Сегодня", но общее количество-то становится реальным.

   
 
 автор: tuder   (21.08.2006 в 11:12)   письмо автору
 
   для: 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.

   
 
 автор: Loki   (21.08.2006 в 10:10)   письмо автору
 
   для: tuder   (21.08.2006 в 07:56)
 

Значит что-то вы напутали и берете данные только из архивной таблицы.

   
 
 автор: 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_hit0);
    
$hits_today        mysql_result($uni_hit0);
    
$hosts_total_today mysql_result($tot_hst0);
    
$hosts_today       mysql_result($uni_hst0);

  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 != && $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_hit0);
    
$hits        += mysql_result($uni_hit0);
    
$hosts_total += mysql_result($tot_hst0);
    
$hosts       += mysql_result($uni_hst0);
  }

  
// Если требуемый интервал затрагивает дни, упакованные в месячную архивную таблицу
  // плюс ко всему извлекаем информацию из архивной таблицы $tbl_arch_hits_month
  
if($begin == && $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_hit0);
    
$hits        += mysql_result($uni_hit0);
    
$hosts_total += mysql_result($tot_hst0);
    
$hosts       += mysql_result($uni_hst0);

    
// Получаем самое старое число из таблицы $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($dat0);
      
$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_hit0);
      
$hits        += mysql_result($uni_hit0);
      
$hosts_total += mysql_result($tot_hst0);
      
$hosts       += mysql_result($uni_hst0);
    }
  }
  
// Возвращаем результат
  
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, без обращения к вашей системе статистики? А делая запрос непосредственно к базам и выводя только нужную информацию.

Могу ли я рассказать про ситуацию ещё как-то более подробно?

   
 
 автор: cheops   (18.08.2006 в 12:27)   письмо автору
 
   для: 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. Не очень понятно, если честно.

   

Сообщения:  [1-10]    [11-20]  [21-30] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования