コード例 #1
0
function mysql_admin_events_check($nopid = false)
{
    $f = array();
    $unix = new unix();
    if ($nopid) {
        $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
        $pid = @file_get_contents($pidfile);
        if ($unix->process_exists($pid)) {
            writelogs("Already running pid {$pid}", __FUNCTION__, __FILE__, __LINE__);
            return;
        }
        $t = 0;
    }
    $q = new mysql();
    if (!$q->TABLE_EXISTS('mysql_events', 'artica_events')) {
        $q->BuildTables();
    }
    $users = new usersMenus();
    $hostname = $users->hostname;
    $prefix = "INSERT IGNORE INTO mysql_events (`zDate`,`function`,`process`,`line`,`description`,`category`,`servername`) VALUES ";
    @mkdir("{$GLOBALS["ARTICALOGDIR"]}/mysql_admin_events", 0755, true);
    if (!($handle = opendir("{$GLOBALS["ARTICALOGDIR"]}/mysql_admin_events"))) {
        return;
    }
    $countDeFiles = 0;
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $filename = "{$GLOBALS["ARTICALOGDIR"]}/mysql_admin_events/{$filename}";
        $timeFile = $unix->file_time_min($filename);
        if ($timeFile > 240) {
            @unlink($filename);
            continue;
        }
        $array = unserialize(@file_get_contents($filename));
        if (!is_array($array)) {
            @unlink($filename);
            continue;
        }
        $array["text"] = addslashes($array["text"]);
        $f[] = "('{$array["zdate"]}','{$array["function"]}','{$array["file"]}','{$array["line"]}','{$array["text"]}','{$array["category"]}','{$hostname}')";
        @unlink($filename);
        if (count($f) > 500) {
            $sql = $prefix . @implode(",", $f);
            $q->QUERY_SQL($sql, "artica_events");
            if (!$q->ok) {
                writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__);
            }
            $f = array();
        }
    }
    if (count($f) > 0) {
        $sql = $prefix . @implode(",", $f);
        $q->QUERY_SQL($sql, "artica_events");
        if (!$q->ok) {
            writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__);
        }
    }
    update_events_check();
}
コード例 #2
0
function mysql_admin_events_check($nopid = false)
{
    $f = array();
    if ($nopid) {
        $unix = new unix();
        $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
        $pid = @file_get_contents($pidfile);
        if ($unix->process_exists($pid)) {
            writelogs("Already running pid {$pid}", __FUNCTION__, __FILE__, __LINE__);
            return;
        }
        $t = 0;
    }
    $q = new mysql();
    if (!$q->TABLE_EXISTS('mysql_events', 'artica_events')) {
        $q->BuildTables();
    }
    if (!$q->TABLE_EXISTS('mysql_events', 'artica_events', true)) {
        return;
    }
    $users = new usersMenus();
    $hostname = $users->hostname;
    $prefix = "INSERT IGNORE INTO mysql_events (`zDate`,`function`,`process`,`line`,`description`,`category`,`servername`) VALUES ";
    foreach (glob("{$GLOBALS["ARTICALOGDIR"]}/mysql_admin_events/*") as $filename) {
        $array = unserialize(@file_get_contents($filename));
        if (!is_array($array)) {
            $array["text"] = basename($filename) . " is not an array, skip event " . @file_get_contents($filename);
            $array["date"] = date('Y-m-d H:i:s');
            $array["pid"] = getmypid();
            $array["function"] = __FUNCTION__;
            $array["category"] = "parser";
            $array["file"] = basename(__FILE__);
            $array["line"] = __LINE__;
        }
        $array["text"] = addslashes($array["text"]);
        $f[] = "('{$array["zdate"]}','{$array["function"]}','{$array["file"]}','{$array["line"]}','{$array["text"]}','{$array["category"]}','{$hostname}')";
        @unlink($filename);
    }
    if (count($f) > 0) {
        $sql = $prefix . @implode(",", $f);
        $q->QUERY_SQL($sql, "artica_events");
        if (!$q->ok) {
            writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__);
        }
    }
    update_events_check();
}