- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/statistic.php
- Класс: CStatistics
- Вызов: CStatistics::CleanUpSearcherDynamic
static function CleanUpSearcherDynamic()
{
set_time_limit(0);
ignore_user_abort(true);
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$DAYS = intval(COption::GetOptionString("statistic", "SEARCHER_DAYS"));
$SID = 0;
if ($DAYS>=0)
{
$strSql = "
SELECT
ID,
ifnull(DYNAMIC_KEEP_DAYS,'$DAYS') as DYNAMIC_KEEP_DAYS
FROM
b_stat_searcher
";
$w = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($wr = $w->Fetch())
{
$SDAYS = intval($wr["DYNAMIC_KEEP_DAYS"]);
$SID = intval($wr["ID"]);
$strSql = "
SELECT
ID,
TOTAL_HITS
FROM
b_stat_searcher_day
WHERE
SEARCHER_ID = $SID
AND DATE_STAT <= DATE_SUB(CURDATE(),INTERVAL $SDAYS DAY)
";
$z = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($zr=$z->Fetch())
{
$ID = $zr["ID"];
if (intval($zr["TOTAL_HITS"])>0)
{
$arFields = Array(
"DATE_CLEANUP" => $DB->GetNowFunction(),
"TOTAL_HITS" => "TOTAL_HITS + ".intval($zr["TOTAL_HITS"]),
);
$DB->Update("b_stat_searcher",$arFields,"WHERE ID='$SID'",$err_mess.__LINE__);
}
$strSql = "DELETE FROM b_stat_searcher_day WHERE ID='$ID'";
$DB->Query($strSql, false, $err_mess.__LINE__);
}
}
if (intval($SID)>0 && COption::GetOptionString("statistic", "USE_AUTO_OPTIMIZE")=="Y")
{
$DB->Query("OPTIMIZE TABLE b_stat_searcher_day", false, $err_mess.__LINE__);
}
}
}