function FLUX_HOUR($astimeout = false)
{
    $TimeFile = "/etc/artica-postfix/pids/exec.squid.interface-size.php.FLUX_HOUR.time";
    if ($GLOBALS["VERBOSE"]) {
        $astimeout = false;
    }
    if ($GLOBALS["FORCE"]) {
        $astimeout = false;
    }
    if ($astimeout) {
        $unix = new unix();
        if ($unix->file_time_min($TimeFile) < 5) {
            events("Aborting, require 5mn minimal");
            return;
        }
    }
    @unlink($TimeFile);
    @file_put_contents($TimeFile, time());
    $os = new os_system();
    $UPTIME = $os->uptime_int();
    build_progress("{uptime} {$UPTIME}", 15);
    @file_put_contents("{$GLOBALS["BASEDIR"]}/UPTIME", $UPTIME);
    CACHES_AVG();
    $now = strtotime("-24 hour");
    $MAIN = array();
    $xdata = array();
    $ydata = array();
    $MAIN = array();
    $xdata = array();
    $ydata = array();
    $influx = new influx();
    $sock = new sockets();
    echo "# # # # # # # # # # # # # # # # # # # # #\n";
    echo "# # # # # # # # FLUX_HOUR # # # # # # # #\n";
    echo "# # # # # # # # # # # # # # # # # # # # #\n";
    $q = new mysql_squid_builder();
    $q2 = new postgres_sql();
    if (!$q->TABLE_EXISTS("dashboard_size_day")) {
        if ($q2->TABLE_EXISTS("access_log")) {
            FLUX_HOUR_POSTGRES();
            return;
        }
        return;
    }
    if ($q->TABLE_EXISTS("dashboard_size_day")) {
        build_progress("{refresh_dashboard_values} FLUX HOUR", 16);
        $sql = "SELECT SUM(SIZE) as SIZE,TIME FROM dashboard_size_day GROUP BY TIME ORDER BY TIME ASC";
        echo "FLUX_HOUR:: MySQL ****************** {$sql} **********************\n";
        $results = $q->QUERY_SQL($sql);
        events("{$sql} -> " . mysql_num_rows($results) . " items");
        if (!$q->ok) {
            events($q->mysql_error);
        }
        while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) {
            $size = intval($ligne["SIZE"]) / 1024;
            $size = $size / 1024;
            $time = strtotime($ligne["TIME"]);
            $min = date("l H:i:00", $time);
            echo "FLUX_HOUR: {$min} = {$size}\n";
            $xdata[] = $min;
            $ydata[] = $size;
        }
        build_progress("{refresh_dashboard_values} FLUX HOUR " . count($xdata) . " items", 16);
        $MAIN["xdata"] = $xdata;
        $MAIN["ydata"] = $ydata;
        echo "# # # FLUX_HOUR:: " . count($xdata) . " ITEMS # # #\n";
        @file_put_contents("{$GLOBALS["BASEDIR"]}/FLUX_HOUR", serialize($MAIN));
        if (count($xdata) < 2) {
            @unlink("{$GLOBALS["BASEDIR"]}/FLUX_HOUR");
            FLUX_HOUR_POSTGRES();
        }
    }
    // -----------------------------------------------------------------------------------------------------
    if ($q->TABLE_EXISTS("dashboard_countwebsite_day")) {
        $sql = "SELECT FAMILYSITE, SUM(SIZE) as SIZE FROM dashboard_countwebsite_day GROUP BY FAMILYSITE ORDER BY SIZE DESC LIMIT 1";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql));
        @unlink("{$GLOBALS["BASEDIR"]}/TOP_WEBSITE");
        if ($ligne["SIZE"] > 0) {
            @file_put_contents("{$GLOBALS["BASEDIR"]}/TOP_WEBSITE", serialize(array($ligne["SIZE"], $ligne["FAMILYSITE"])));
        }
    }
    // -----------------------------------------------------------------------------------------------------
    if ($q->TABLE_EXISTS("dashboard_user_day")) {
        $sql = "SELECT USER, SUM(SIZE) as SIZE FROM dashboard_user_day GROUP BY USER ORDER BY SIZE DESC LIMIT 1";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql));
        events("TOP USER: {$ligne["SIZE"]} : {$ligne["USER"]}");
        @unlink("{$GLOBALS["BASEDIR"]}/TOP_USER");
        if ($ligne["SIZE"] > 0) {
            echo "TOP USER: saving {$GLOBALS["BASEDIR"]}/TOP_USER\n";
            @file_put_contents("{$GLOBALS["BASEDIR"]}/TOP_USER", serialize(array($ligne["SIZE"], $ligne["USER"])));
        }
    }
    // -----------------------------------------------------------------------------------------------------
    if ($q->TABLE_EXISTS("dashboard_blocked_day")) {
        build_progress("{refresh_dashboard_values} TOP_BLOCKED", 16);
        @unlink("{$GLOBALS["BASEDIR"]}/TOP_BLOCKED");
        $sql = "SELECT WEBSITE, SUM(RQS) as RQS FROM dashboard_blocked_day GROUP BY WEBSITE ORDER BY RQS DESC LIMIT 1";
        $ligne = mysql_fetch_array($q->QUERY_SQL($sql));
        events("TOP_BLOCKED: {$ligne["RQS"]} : {$ligne["WEBSITE"]}");
        @unlink("{$GLOBALS["BASEDIR"]}/TOP_BLOCKED");
        if ($ligne["RQS"] > 0) {
            @file_put_contents("{$GLOBALS["BASEDIR"]}/TOP_BLOCKED", serialize(array($ligne["RQS"], $ligne["WEBSITE"])));
        }
    }
    // -----------------------------------------------------------------------------------------------------
    $now = InfluxQueryFromUTC(strtotime("-24 hour"));
    $MAIN = array();
    $xdata = array();
    $ydata = array();
    $influx = new influx();
    $sock = new sockets();
    $ipClass = new IP();
    $q = new mysql_squid_builder();
    @unlink("{$GLOBALS["BASEDIR"]}/MEMBERS_GRAPH");
    $q = new mysql_squid_builder();
    if ($q->TABLE_EXISTS("dashboard_countuser_day")) {
        build_progress("{refresh_dashboard_values}", 50);
        $sql = "SELECT COUNT(USER) AS TCOUNT,TIME FROM dashboard_user_day GROUP BY TIME ORDER BY TIME ASC";
        echo "MEMBERS_GRAPH:: ****************** {$sql} **********************\n";
        $results = $q->QUERY_SQL($sql);
        $CountDedashboard_countuser_day = mysql_num_rows($results);
        events("{$sql} -> {$CountDedashboard_countuser_day} items");
        if (!$q->ok) {
            events($q->mysql_error);
        }
        while ($ligne = @mysql_fetch_array($results, MYSQL_ASSOC)) {
            $xdata[] = $ligne["TIME"];
            $ydata[] = $ligne["TCOUNT"];
        }
        $MAIN["xdata"] = $xdata;
        $MAIN["ydata"] = $ydata;
        if (count($ydata) > 1) {
            @file_put_contents("{$GLOBALS["BASEDIR"]}/MEMBERS_GRAPH", serialize($MAIN));
        }
    }
    build_progress("{done} FLUX MEMBERS_GRAPH", 100);
    // -----------------------------------------------------------------------------------------------------
}
    exit;
}
if ($argv[1] == "--clean") {
    squidhour_clean();
    exit;
}
if ($argv[1] == "--dump-hour") {
    DUMP_HOUR();
    exit;
}
if ($argv[1] == "--dump-users") {
    FULL_USERS_DAY();
    exit;
}
if ($argv[1] == "--cache-avg") {
    CACHES_AVG();
    exit;
}
parse();
function build_progress($text, $pourc)
{
    $cachefile = "/usr/share/artica-postfix/ressources/logs/admin.refresh.progress";
    echo "{$pourc}% {$text}\n";
    $array["POURC"] = $pourc;
    $array["TEXT"] = $text;
    events("{$pourc}% {$text}");
    @file_put_contents($cachefile, serialize($array));
    @chmod($cachefile, 0755);
}
function events($text = null)
{