function DUMP_HOUR() { $TimeFile = "/etc/artica-postfix/pids/exec.squid.interface-size.php.DUMP_HOUR.time"; $unix = new unix(); $xtime = $unix->file_time_min($TimeFile); if (!$GLOBALS["FORCE"]) { if (!$GLOBALS["VERBOSE"]) { if ($xtime < 119) { events("Aborting current {$xtime}mn, require 2h minimal"); return; } } } @unlink($TimeFile); @file_put_contents($TimeFile, time()); $sock = new sockets(); $q = new mysql_squid_builder(); $q->QUERY_SQL("CREATE TABLE IF NOT EXISTS `dashboard_volume_day` (\n\t\t\t`TIME` DATETIME,\n\t\t\t`FAMILYSITE` VARCHAR(128),\n\t\t\t`USERID` VARCHAR(64),\n\t\t\t`IPADDR` VARCHAR(64),\n\t\t\t`MAC` VARCHAR(64),\n\t\t\t`CATEGORY` VARCHAR(64),\n\t\t\t`CONTENT_TYPE` VARCHAR(64),\n\t\t\t`SIZE` BIGINT UNSIGNED,\n\t\t\t`RQS` BIGINT UNSIGNED,\n\t\t\tKEY `TIME` (`TIME`),\n\t\t\tKEY `FAMILYSITE` (`FAMILYSITE`),\n\t\t\tKEY `USERID` (`USERID`),\n\t\t\tKEY `IPADDR` (`IPADDR`),\n\t\t\tKEY `MAC` (`MAC`),\n\t\t\tKEY `CONTENT_TYPE` (`CONTENT_TYPE`)\n\t\t\n\t\t\t) ENGINE=MYISAM;"); if (!$q->ok) { DUMP_HOUR_PROGRESS("{mysql_error} CREATE TABLE", 110); echo $q->mysql_error . "\n"; events("FATAL: {$q->mysql_error}"); return; } $MySQLStatisticsRetentionDays = intval($sock->GET_INFO("MySQLStatisticsRetentionDays")); if ($MySQLStatisticsRetentionDays == 0) { $MySQLStatisticsRetentionDays = 5; } $postgres = new postgres_sql(); events("MySQL Statistics Retention Days:{$MySQLStatisticsRetentionDays}"); $c = 0; $TRUNCATE = false; $prefix = "INSERT IGNORE INTO `dashboard_volume_day` (`TIME`,`FAMILYSITE`,`USERID`,`IPADDR`,`MAC`,`CATEGORY`,`SIZE`,`RQS`) VALUES "; $timeQuery = time(); $TimeGroup = "date_trunc('hour', zdate) as zdate"; $timeQuery = date("Y-m-d H:i:s", strtotime("-{$MySQLStatisticsRetentionDays} day")); $sql = "SELECT SUM(size) as size, SUM(RQS) as RQS,\n\tfamilysite,ipaddr,mac,userid,category,\n\t{$TimeGroup}\tFROM access_log \n\tWHERE zdate > '{$timeQuery}'\n\tGROUP BY zdate,familysite,ipaddr,mac,userid,category ORDER by zdate"; echo "******************************\n{$sql}\n******************************\n"; DUMP_HOUR_PROGRESS("{query}...", 50); $results = $postgres->QUERY_SQL($sql); if (!$postgres->ok) { DUMP_HOUR_PROGRESS("{mysql_error} QUERY", 110); echo $postgres->mysql_error . "\n"; events("FATAL: {$q->mysql_error}"); return; } $d = 0; while ($ligne = @pg_fetch_assoc($results)) { $CATEGORY = null; $zDate = $ligne["zdate"]; $FAMILYSITE = mysql_escape_string2($ligne["familysite"]); $IPADDR = mysql_escape_string2($ligne["ipaddr"]); $USERID = mysql_escape_string2($ligne["userid"]); $MAC = mysql_escape_string2($ligne["mac"]); $RQS = mysql_escape_string2($ligne["rqs"]); $SIZE = mysql_escape_string2($ligne["size"]); $CATEGORY = mysql_escape_string2($ligne["category"]); $RSQL[] = "('{$zDate}','{$FAMILYSITE}','{$USERID}','{$IPADDR}','{$MAC}','{$CATEGORY}','{$SIZE}','{$RQS}')"; $c++; $d++; if (count($RSQL) > 500) { echo "{$c}...\n"; if (!$TRUNCATE) { events("dashboard_volume_day:TRUNCATE TABLE"); $q->QUERY_SQL("TRUNCATE TABLE `dashboard_volume_day`"); $TRUNCATE = TRUE; } $q->QUERY_SQL($prefix . @implode(",", $RSQL)); if (!$q->ok) { events("FATAL! {$q->mysql_error}"); DUMP_HOUR_PROGRESS("{mysql_error} at {$c}", 110); return; } $RSQL = array(); } } if (count($RSQL) > 0) { if (!$TRUNCATE) { events("dashboard_volume_day:TRUNCATE TABLE"); $q->QUERY_SQL("TRUNCATE TABLE `dashboard_volume_day`"); $TRUNCATE = TRUE; } $q->QUERY_SQL($prefix . @implode(",", $RSQL)); if (!$q->ok) { events("FATAL! {$q->mysql_error}"); DUMP_HOUR_PROGRESS("{mysql_error} at {$c}", 110); return; } $RSQL = array(); } DUMP_HOUR_PROGRESS("Total {$c} inserted rows", 80); events("dashboard_volume_day: Total {$c} inserted rows"); echo "******************************\nFAMILY_SITES_DAY();\n******************************\n"; echo "******************************\nFULL_USERS_DAY();\n******************************\n"; DUMP_HOUR_PROGRESS("FULL_USERS_DAY", 90); FULL_USERS_DAY(); DUMP_HOUR_PROGRESS("{done}", 100); }
$GLOBALS["VERBOSE"] = true; } include_once dirname(__FILE__) . "/frame.class.inc"; include_once dirname(__FILE__) . "/class.unix.inc"; if (!isset($GLOBALS["ARTICALOGDIR"])) { $GLOBALS["ARTICALOGDIR"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/ArticaLogDir"); if ($GLOBALS["ARTICALOGDIR"] == null) { $GLOBALS["ARTICALOGDIR"] = "/var/log/artica-postfix"; } } if (isset($_GET["reload-progress"])) { reload_progress(); exit; } if (isset($_GET["dump-hour-progress"])) { DUMP_HOUR_PROGRESS(); exit; } if (isset($_GET["paranoid-progress"])) { paranoid_progress(); exit; } if (isset($_GET["paranoid-emergency-progress"])) { paranoid_emergency_progress(); exit; } if (isset($_GET["windows-update-delete"])) { windows_update_delete(); exit; } if (isset($_GET["not-categorize-progress"])) {