2require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/statistic/classes/general/statistic.php");
8 $DB = CDatabase::GetModuleConnection(
'statistic');
9 if ($cleanup_date <>
'')
14 $strSql =
"DELETE FROM $table_name WHERE $date_name<FROM_UNIXTIME('$stmp')";
22 $DB = CDatabase::GetModuleConnection(
'statistic');
23 $php_session_time = intval(ini_get(
"session.gc_maxlifetime"));
31 GUEST_MD5 = '".$DB->ForSql($GUEST_MD5).
"'
32 and DATE_LAST > DATE_ADD(now(), INTERVAL - $php_session_time SECOND)
42 ignore_user_abort(
true);
43 $DB = CDatabase::GetModuleConnection(
'statistic');
44 $DAYS = intval(COption::GetOptionString(
"statistic",
"PATH_DAYS"));
49 DELETE FROM b_stat_path
50 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
55 DELETE FROM b_stat_path_adv
56 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
60 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
62 $DB->Query(
"OPTIMIZE TABLE b_stat_path");
63 $DB->Query(
"OPTIMIZE TABLE b_stat_path_adv");
71 if (($_SESSION[
"SESS_NO_AGENT_STATISTIC"] ??
'') !=
"Y" && !defined(
"NO_AGENT_STATISTIC"))
74 ignore_user_abort(
true);
75 $DB = CDatabase::GetModuleConnection(
'statistic');
76 $php_session_time = intval(ini_get(
"session.gc_maxlifetime"));
78 DELETE FROM b_stat_path_cache WHERE
79 DATE_HIT < DATE_ADD(now(), INTERVAL - $php_session_time SECOND) or
84 return "CStatistics::CleanUpPathCache();";
90 if (($_SESSION[
"SESS_NO_AGENT_STATISTIC"] ??
'') !=
"Y" && !defined(
"NO_AGENT_STATISTIC"))
93 ignore_user_abort(
true);
94 $DB = CDatabase::GetModuleConnection(
'statistic');
95 $php_session_time = intval(ini_get(
"session.gc_maxlifetime"));
97 DELETE FROM b_stat_session_data WHERE
98 DATE_LAST < DATE_ADD(now(), INTERVAL - $php_session_time SECOND) or
103 return "CStatistics::CleanUpSessionData();";
109 ignore_user_abort(
true);
110 $DB = CDatabase::GetModuleConnection(
'statistic');
111 $DAYS = intval(COption::GetOptionString(
"statistic",
"SEARCHER_DAYS"));
118 ifnull(DYNAMIC_KEEP_DAYS,'$DAYS') as DYNAMIC_KEEP_DAYS
122 $w =
$DB->Query($strSql);
123 while ($wr = $w->Fetch())
125 $SDAYS = intval($wr[
"DYNAMIC_KEEP_DAYS"]);
126 $SID = intval($wr[
"ID"]);
135 AND DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $SDAYS DAY)
137 $z =
$DB->Query($strSql);
138 while (
$zr=
$z->Fetch())
141 if (intval(
$zr[
"TOTAL_HITS"])>0)
144 "DATE_CLEANUP" =>
$DB->GetNowFunction(),
145 "TOTAL_HITS" =>
"TOTAL_HITS + ".intval(
$zr[
"TOTAL_HITS"]),
147 $DB->Update(
"b_stat_searcher",
$arFields,
"WHERE ID='$SID'");
149 $strSql =
"DELETE FROM b_stat_searcher_day WHERE ID='$ID'";
153 if (intval($SID)>0 && COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
155 $DB->Query(
"OPTIMIZE TABLE b_stat_searcher_day");
163 ignore_user_abort(
true);
164 $DB = CDatabase::GetModuleConnection(
'statistic');
165 $DAYS = intval(COption::GetOptionString(
"statistic",
"EVENT_DYNAMIC_DAYS"));
172 ifnull(DYNAMIC_KEEP_DAYS,'".$DAYS.
"') as DYNAMIC_KEEP_DAYS
176 $w =
$DB->Query($strSql);
177 while ($wr = $w->Fetch())
179 $EDAYS = intval($wr[
"DYNAMIC_KEEP_DAYS"]);
180 $EID = intval($wr[
"ID"]);
190 AND DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL ".$EDAYS.
" DAY)
192 $z =
$DB->Query($strSql);
193 while (
$zr=
$z->Fetch())
196 if (intval(
$zr[
"COUNTER"])>0)
199 "DATE_CLEANUP" =>
$DB->GetNowFunction(),
200 "COUNTER" =>
"COUNTER + ".intval(
$zr[
"COUNTER"]),
201 "MONEY" =>
"MONEY + ".doubleval(
$zr[
"MONEY"])
203 $DB->Update(
"b_stat_event",
$arFields,
"WHERE ID='$EID'");
205 $strSql =
"DELETE FROM b_stat_event_day WHERE ID='$ID'";
209 if (intval($EID)>0 && COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
211 $DB->Query(
"OPTIMIZE TABLE b_stat_event_day");
219 ignore_user_abort(
true);
220 $DB = CDatabase::GetModuleConnection(
'statistic');
221 $DAYS = intval(COption::GetOptionString(
"statistic",
"ADV_DAYS"));
225 DELETE FROM b_stat_adv_day
226 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
231 DELETE FROM b_stat_adv_event_day
232 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
236 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
238 $DB->Query(
"OPTIMIZE TABLE b_stat_adv_day");
239 $DB->Query(
"OPTIMIZE TABLE b_stat_adv_event_day");
247 ignore_user_abort(
true);
248 $DB = CDatabase::GetModuleConnection(
'statistic');
249 $DAYS = intval(COption::GetOptionString(
"statistic",
"PHRASES_DAYS"));
253 DELETE FROM b_stat_phrase_list
254 WHERE DATE_HIT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
258 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
260 $DB->Query(
"OPTIMIZE TABLE b_stat_phrase_list");
268 ignore_user_abort(
true);
269 $DB = CDatabase::GetModuleConnection(
'statistic');
270 $DAYS = intval(COption::GetOptionString(
"statistic",
"REFERER_LIST_DAYS"));
274 DELETE FROM b_stat_referer_list
275 WHERE DATE_HIT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
279 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
281 $DB->Query(
"OPTIMIZE TABLE b_stat_referer_list");
289 ignore_user_abort(
true);
290 $DB = CDatabase::GetModuleConnection(
'statistic');
291 $DAYS = COption::GetOptionString(
"statistic",
"REFERER_DAYS");
292 $TOP = COption::GetOptionString(
"statistic",
"REFERER_TOP");
293 $DAYS = intval($DAYS);
296 $strSql =
"SELECT ID FROM b_stat_referer ORDER BY SESSIONS desc LIMIT ".intval($TOP);
297 $z =
$DB->Query($strSql);
299 while (
$zr=
$z->Fetch())
$str .=
",".$zr[
"ID"];
301 DELETE FROM b_stat_referer
303 (DATE_LAST <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
304 OR DATE_LAST is null)
308 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
310 $DB->Query(
"OPTIMIZE TABLE b_stat_referer");
318 ignore_user_abort(
true);
319 $DB = CDatabase::GetModuleConnection(
'statistic');
320 $VISIT_DAYS = COption::GetOptionString(
"statistic",
"VISIT_DAYS");
321 $VISIT_DAYS = intval($VISIT_DAYS);
325 DELETE FROM b_stat_page
327 DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $VISIT_DAYS DAY)
332 DELETE FROM b_stat_page_adv
334 DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $VISIT_DAYS DAY)
338 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
340 $DB->Query(
"OPTIMIZE TABLE b_stat_page");
341 $DB->Query(
"OPTIMIZE TABLE b_stat_page_adv");
349 ignore_user_abort(
true);
350 $DB = CDatabase::GetModuleConnection(
'statistic');
351 $DAYS = intval(COption::GetOptionString(
"statistic",
"CITY_DAYS"));
355 DELETE FROM b_stat_city_day
356 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
359 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
361 $DB->Query(
"OPTIMIZE TABLE b_stat_city_day");
369 ignore_user_abort(
true);
370 $DB = CDatabase::GetModuleConnection(
'statistic');
371 $DAYS = intval(COption::GetOptionString(
"statistic",
"COUNTRY_DAYS"));
375 DELETE FROM b_stat_country_day
376 WHERE DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
380 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
382 $DB->Query(
"OPTIMIZE TABLE b_stat_country_day");
390 ignore_user_abort(
true);
391 $DB = CDatabase::GetModuleConnection(
'statistic');
392 $DAYS = intval(COption::GetOptionString(
"statistic",
"GUEST_DAYS"));
396 DELETE FROM b_stat_guest
397 WHERE LAST_DATE <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
401 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
403 $DB->Query(
"OPTIMIZE TABLE b_stat_guest");
411 ignore_user_abort(
true);
412 $DB = CDatabase::GetModuleConnection(
'statistic');
413 $DAYS = intval(COption::GetOptionString(
"statistic",
"SESSION_DAYS"));
417 DELETE FROM b_stat_session
418 WHERE DATE_LAST <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
422 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
424 $DB->Query(
"OPTIMIZE TABLE b_stat_session");
425 $DB->Query(
"OPTIMIZE TABLE b_stat_session_data");
433 ignore_user_abort(
true);
434 $DB = CDatabase::GetModuleConnection(
'statistic');
435 $DAYS = intval(COption::GetOptionString(
"statistic",
"HIT_DAYS"));
439 DELETE FROM b_stat_hit
440 WHERE DATE_HIT <= DATE_SUB(CURDATE(),INTERVAL $DAYS DAY)
444 if (COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
446 $DB->Query(
"OPTIMIZE TABLE b_stat_hit");
454 ignore_user_abort(
true);
455 $DB = CDatabase::GetModuleConnection(
'statistic');
456 $DAYS = intval(COption::GetOptionString(
"statistic",
"SEARCHER_HIT_DAYS"));
459 DELETE FROM b_stat_searcher_hit
460 WHERE HIT_KEEP_DAYS IS NULL
461 AND DATE_HIT <= DATE_SUB(CURDATE(), INTERVAL $DAYS DAY)
468 STRAIGHT_JOIN b_stat_searcher_hit sh
469 WHERE s.ID = sh.SEARCHER_ID
470 AND s.HIT_KEEP_DAYS is not null
471 AND sh.DATE_HIT <= DATE_SUB(CURDATE(), INTERVAL s.HIT_KEEP_DAYS DAY)
475 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
477 $DB->Query(
"OPTIMIZE TABLE b_stat_searcher_hit");
484 ignore_user_abort(
true);
485 $DB = CDatabase::GetModuleConnection(
'statistic');
486 $ADV_GUEST_DAYS = COption::GetOptionString(
"statistic",
"ADV_GUEST_DAYS");
487 $ADV_GUEST_DAYS = intval($ADV_GUEST_DAYS);
488 if ($ADV_GUEST_DAYS>=0)
491 DELETE FROM b_stat_adv_guest WHERE
493 to_days(now())-to_days(DATE_GUEST_HIT)>=$ADV_GUEST_DAYS or
494 DATE_GUEST_HIT is null or
495 length(DATE_GUEST_HIT)<=0
499 to_days(now())-to_days(DATE_HOST_HIT)>=$ADV_GUEST_DAYS or
500 DATE_HOST_HIT is null or
501 length(DATE_HOST_HIT)<=0
505 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
507 $DB->Query(
"OPTIMIZE TABLE b_stat_adv_guest");
515 ignore_user_abort(
true);
516 $DB = CDatabase::GetModuleConnection(
'statistic');
517 $DAYS = intval(COption::GetOptionString(
"statistic",
"EVENTS_DAYS"));
520 DELETE FROM b_stat_event_list
521 WHERE KEEP_DAYS IS NULL
522 AND DATE_ENTER <= DATE_SUB(CURDATE(), INTERVAL $DAYS DAY)
529 STRAIGHT_JOIN b_stat_event_list el
530 WHERE e.ID = el.EVENT_ID
531 AND e.KEEP_DAYS is not null
532 AND el.DATE_ENTER <= DATE_SUB(CURDATE(), INTERVAL e.KEEP_DAYS DAY)
536 if(COption::GetOptionString(
"statistic",
"USE_AUTO_OPTIMIZE")==
"Y")
538 $DB->Query(
"OPTIMIZE TABLE b_stat_event_list");
544 $DB = CDatabase::GetModuleConnection(
'statistic');
549 if (!(defined(
"ADMIN_SECTION") &&
ADMIN_SECTION===
true) && defined(
"SITE_ID"))
556 $strSql =
"SELECT D.ID FROM b_stat_day_site D WHERE D.DATE_STAT=CURDATE() AND SITE_ID = '".$DB->ForSql(
$SITE_ID, 2).
"'";
557 $rs =
$DB->Query($strSql);
561 "DATE_STAT" =>
"curdate()",
563 "C_HOSTS" => intval($HOSTS),
564 "SESSIONS" => intval($SESSIONS),
565 "HITS" => intval($HITS),
571 SELECT D.ID, ".$DB->DateToCharFunction(
"D.DATE_STAT",
"SHORT").
" DATE_STAT
572 FROM b_stat_day_site D
573 WHERE D.DATE_STAT=DATE_SUB(CURDATE(),INTERVAL 1 DAY)
576 $rs =
$DB->Query($strSql);
580 if (is_array($arF))
$DB->Update(
"b_stat_day_site",$arF,
"WHERE ID='".
$ar[
"ID"].
"'");
585 public static function SetNewDay($HOSTS=0, $TOTAL_HOSTS=0, $SESSIONS=0, $HITS=0, $NEW_GUESTS=0, $GUESTS=0, $FAVORITES=0)
588 if ((!isset($_SESSION[
"SESS_NO_AGENT_STATISTIC"]) || $_SESSION[
"SESS_NO_AGENT_STATISTIC"]!=
"Y") && !defined(
"NO_AGENT_STATISTIC"))
590 $DB = CDatabase::GetModuleConnection(
'statistic');
592 $strSql =
"SELECT D.ID FROM b_stat_day D WHERE D.DATE_STAT=CURDATE()";
593 $rs =
$DB->Query($strSql);
597 "DATE_STAT" =>
"curdate()",
598 "C_HOSTS" => intval($HOSTS),
599 "SESSIONS" => intval($SESSIONS),
600 "GUESTS" => intval($GUESTS),
601 "HITS" => intval($HITS),
602 "FAVORITES" => intval($FAVORITES),
603 "NEW_GUESTS" => intval($NEW_GUESTS),
609 SELECT D.ID, ".$DB->DateToCharFunction(
"D.DATE_STAT",
"SHORT").
" DATE_STAT
611 WHERE D.DATE_STAT=DATE_SUB(CURDATE(),INTERVAL 1 DAY)
613 $rs =
$DB->Query($strSql);
617 if (is_array($arF))
$DB->Update(
"b_stat_day",$arF,
"WHERE ID='".
$ar[
"ID"].
"'");
620 return "CStatistics::SetNewDay();";
625 return $date.
" + INTERVAL ".$days.
" DAY";
628 public static function DBTopSql($strSql, $nTopCount=
false)
630 if($nTopCount===
false)
631 $nTopCount = intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT'));
633 $nTopCount = intval($nTopCount);
635 return str_replace(
"/*TOP*/",
"", $strSql).
"\nLIMIT ".$nTopCount;
637 return str_replace(
"/*TOP*/",
"", $strSql);
642 return "ifnull(".$strSql.
",'1980-01-01')";
647 return "UNIX_TIMESTAMP(".$date1.
")-UNIX_TIMESTAMP(".$date2.
")";
static GetAttentiveness($DATE_STAT, $SITE_ID=false)
static CleanUpCountries()
static CleanUpPathDynamic()
static CleanUpSessionData()
static CleanUpAdvDynamic()
static SetNewDayForSite($SITE_ID=false, $HOSTS=0, $TOTAL_HOSTS=0, $SESSIONS=0, $HITS=0)
static GetSessionDataByMD5($GUEST_MD5)
static CleanUpSearcherHits()
static SetNewDay($HOSTS=0, $TOTAL_HOSTS=0, $SESSIONS=0, $HITS=0, $NEW_GUESTS=0, $GUESTS=0, $FAVORITES=0)
static CleanUpRefererList()
static CleanUpPathCache()
static CleanUpEventDynamic()
static DBDateAdd($date, $days=1)
static CleanUpAdvGuests()
static DBFirstDate($strSql)
static CleanUpTableByDate($cleanup_date, $table_name, $date_name)
static DBTopSql($strSql, $nTopCount=false)
static DBDateDiff($date1, $date2)
static CleanUpSearcherDynamic()
$_SERVER["DOCUMENT_ROOT"]
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
MkDateTime($strDT, $format="d.m.Y H:i:s")