function save() { $mysql = new mysqlserver(); while (list($index, $line) = each($_GET)) { $mysql->main_array[trim($index)] = trim($line); } $mysql->save(); }
function status_computer_mysql_memory_check() { include_once 'ressources/class.mysql-server.inc'; $t = time(); $instance_id = 0; $page = CurrentPageName(); $tpl = new templates(); $mysql = new mysqlserver(); $users = new usersMenus(); if (!$users->AsSystemAdministrator) { return; } if ($users->MEM_TOTAL_INSTALLEE < 624288) { return; } $serverMem = round(($users->MEM_TOTAL_INSTALLEE - 300) / 1024); $color = "black"; $VARIABLES = $mysql->SHOW_VARIABLES(); if (!is_numeric($mysql->main_array["max_connections"])) { $mysql->main_array["max_connections"] = $VARIABLES["max_connections"]; } $read_buffer_size = $mysql->main_array["read_buffer_size"]; if (!is_numeric($read_buffer_size)) { $read_buffer_size = $VARIABLES["read_buffer_size"] / 1024 / 1000; } $read_rnd_buffer_size = $mysql->main_array["read_rnd_buffer_size"]; if (!is_numeric($read_rnd_buffer_size)) { $read_rnd_buffer_size = $VARIABLES["read_rnd_buffer_size"] / 1024 / 1000; } $sort_buffer_size = $mysql->main_array["sort_buffer_size"]; if (!is_numeric($sort_buffer_size)) { $sort_buffer_size = $VARIABLES["sort_buffer_size"] / 1024 / 1000; } $thread_stack = $mysql->main_array["thread_stack"]; if (!is_numeric($thread_stack)) { $thread_stack = $VARIABLES["thread_stack"] / 1024 / 1000; } $join_buffer_size = $mysql->main_array["join_buffer_size"]; if (!is_numeric($join_buffer_size)) { $join_buffer_size = $VARIABLES["join_buffer_size"] / 1024 / 1000; } $per_thread_buffers = $sort_buffer_size + $read_rnd_buffer_size + $sort_buffer_size + $thread_stack + $join_buffer_size; $Warn = false; $total_per_thread_buffers = $per_thread_buffers * $mysql->main_array["max_connections"]; if ($total_per_thread_buffers > $serverMem) { $Warn = true; } $key_buffer_size = $mysql->main_array["key_buffer_size"]; if (!is_numeric($key_buffer_size)) { $key_buffer_size = $VARIABLES["key_buffer_size"] / 1024 / 1000; } $max_tmp_table_size = $mysql->main_array["max_tmp_table_size"]; if (!is_numeric($max_tmp_table_size)) { $max_tmp_table_size = $VARIABLES["max_tmp_table_size"] / 1024 / 1000; } $innodb_buffer_pool_size = $mysql->main_array["innodb_buffer_pool_size"]; if (!is_numeric($innodb_buffer_pool_size)) { $innodb_buffer_pool_size = $VARIABLES["innodb_buffer_pool_size"] / 1024 / 1000; } $innodb_additional_mem_pool_size = $mysql->main_array["innodb_additional_mem_pool_size"]; if (!is_numeric($innodb_additional_mem_pool_size)) { $innodb_additional_mem_pool_size = $VARIABLES["innodb_additional_mem_pool_size"] / 1024 / 1000; } $innodb_log_buffer_size = $mysql->main_array["innodb_log_buffer_size"]; if (!is_numeric($innodb_log_buffer_size)) { $innodb_log_buffer_size = $VARIABLES["innodb_log_buffer_size"] / 1024 / 1000; } $query_cache_size = $mysql->main_array["query_cache_size"]; if (!is_numeric($query_cache_size)) { $query_cache_size = $VARIABLES["query_cache_size"] / 1024 / 1000; } $server_buffers = $key_buffer_size + $max_tmp_table_size + $innodb_buffer_pool_size + $innodb_additional_mem_pool_size + $innodb_log_buffer_size + $query_cache_size; if ($server_buffers > $serverMem) { $Warn = true; } $max_used_memory = $server_buffers + $total_per_thread_buffers; if ($max_used_memory > $serverMem) { $Warn = true; } $UNIT = "M"; if ($max_used_memory > 1000) { $max_used_memory = round($max_used_memory / 1000, 2); $UNIT = "G"; } $text = $tpl->_ENGINE_parse_body("{mysql_warn_must_tune}"); $text = str_replace("%m", $serverMem, $text); if ($Warn) { echo "\n\t\t<table style='width:99%' class=form>\n\t\t<tr>\n\t\t\t<td valign='top'><img src='img/database-error-64.png'>\n\t\t\t<td valign='top'><a href=\"javascript:blur();\" OnClick=\"Loadjs('mysql.perfs.php',true);\" \n\t\t\tstyle='font-size:12px;color:#C72727;text-decoration:underline'>{$text}</a>\n\t\t\t</td>\n\t\t</tr>\n\t\t</table>\n\t\t\n\t\t"; return; } $sock = new sockets(); $sock->SET_INFO("MySqlMemoryCheck", 1); }
function page() { $page = CurrentPageName(); $tpl = new templates(); $sock = new sockets(); $users = new usersMenus(); $EnableZarafaTuning = $sock->GET_INFO("EnableZarafaTuning"); if (!is_numeric($EnableZarafaTuning)) { $EnableZarafaTuning = 0; } $ZarafTuningParameters = unserialize(base64_decode($sock->GET_INFO("ZarafaTuningParameters"))); $zarafa_innodb_buffer_pool_size = $ZarafTuningParameters["zarafa_innodb_buffer_pool_size"]; $zarafa_query_cache_size = $ZarafTuningParameters["zarafa_query_cache_size"]; $zarafa_innodb_log_file_size = $ZarafTuningParameters["zarafa_innodb_log_file_size"]; $zarafa_innodb_log_buffer_size = $ZarafTuningParameters["zarafa_innodb_log_buffer_size"]; $zarafa_max_allowed_packet = $ZarafTuningParameters["zarafa_max_allowed_packet"]; $zarafa_max_connections = $ZarafTuningParameters["zarafa_max_connections"]; $memory = $users->MEM_TOTAL_INSTALLEE / 1000; if (!is_numeric($zarafa_max_connections)) { $zarafa_max_connections = 150; } if (!is_numeric($zarafa_innodb_buffer_pool_size)) { $zarafa_innodb_buffer_pool_size = round($memory / 2.8); } if (!is_numeric($zarafa_innodb_log_file_size)) { $zarafa_innodb_log_file_size = round($zarafa_innodb_buffer_pool_size * 0.25); } if (!is_numeric($zarafa_innodb_log_buffer_size)) { $zarafa_innodb_log_buffer_size = 32; } if (!is_numeric($zarafa_max_allowed_packet)) { $zarafa_max_allowed_packet = 16; } if (!is_numeric($zarafa_query_cache_size)) { $zarafa_query_cache_size = 8; } if ($zarafa_innodb_log_file_size > 2000) { $zarafa_innodb_log_file_size = 2000; } $mysql = new mysqlserver(); $VARIABLES = $mysql->SHOW_VARIABLES(); $read_buffer_size = $ZarafTuningParameters["read_buffer_size"]; if (!is_numeric($read_buffer_size)) { $read_buffer_size = $VARIABLES["read_buffer_size"] / 1024 / 1000; } $read_rnd_buffer_size = $ZarafTuningParameters["read_rnd_buffer_size"]; if (!is_numeric($read_rnd_buffer_size)) { $read_rnd_buffer_size = $VARIABLES["read_rnd_buffer_size"] / 1024 / 1000; } $sort_buffer_size = $ZarafTuningParameters["sort_buffer_size"]; if (!is_numeric($sort_buffer_size)) { $sort_buffer_size = $VARIABLES["sort_buffer_size"] / 1024 / 1000; } $thread_stack = $ZarafTuningParameters["thread_stack"]; if (!is_numeric($thread_stack)) { $thread_stack = $VARIABLES["thread_stack"] / 1024 / 1000; } $join_buffer_size = $ZarafTuningParameters["join_buffer_size"]; if (!is_numeric($join_buffer_size)) { $join_buffer_size = $VARIABLES["join_buffer_size"] / 1024 / 1000; } $key_buffer_size = $ZarafTuningParameters["key_buffer_size"]; if (!is_numeric($key_buffer_size)) { $key_buffer_size = $VARIABLES["key_buffer_size"] / 1024 / 1000; } $max_tmp_table_size = $ZarafTuningParameters["max_tmp_table_size"]; if (!is_numeric($max_tmp_table_size)) { $max_tmp_table_size = $VARIABLES["max_tmp_table_size"] / 1024 / 1000; } $query_cache_size = $ZarafTuningParameters["query_cache_size"]; if (!is_numeric($query_cache_size)) { $query_cache_size = $VARIABLES["query_cache_size"] / 1024 / 1000; } $html = "\n\t<div class=explain id='zarafa_mysql_tuning_text' style='font-size:18px'>{zarafa_mysql_tuning_text}</div>\n\t<div style='width:98%' class=form>\n\t<table style='width:100%'>\n\t<tR>\n\t\t<td class=legend style='font-size:22px'>{enable_tuning_mysql_server}:</td>\n\t\t<td>" . Field_checkbox_design("EnableZarafaTuning", 1, $EnableZarafaTuning, "EnableZarafaTuningCheck()") . "</td>\n\t\t<td> </td>\n\t</tr>\n\t<tr>\n\t\t<td colspan=2><div style='font-size:30px'>{threads}:</td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{read_buffer_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("read_buffer_size", $read_buffer_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{read_rnd_buffer_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("read_rnd_buffer_size", $read_rnd_buffer_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\n\t\n\t<tr>\t\n\t\t<td class=legend style='font-size:22px'>{sort_buffer_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("sort_buffer_size", $sort_buffer_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\t\n\t\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>thread_stack:</td>\n\t\t<td style='font-size:22px'>" . Field_text("thread_stack", $thread_stack, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=2><hr></td>\n\t</tr>\t\n\t<tr>\n\t\t<td colspan=2><div style='font-size:30px'>{server}:</td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{key_buffer_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("key_buffer_size", $key_buffer_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>max_tmp_table_size:</td>\n\t\t<td style='font-size:22px'>" . Field_text("max_tmp_table_size", $max_tmp_table_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{query_cache_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("query_cache_size", $query_cache_size, "font-size:22px;width:110px;padding:3px") . " M</td>\n\t</tr>\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{max_allowed_packet}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_max_allowed_packet", $zarafa_max_allowed_packet, "font-size:22px;width:90px") . " M</td>\n\t\t<td> </td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{max_connections}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_max_connections", $zarafa_max_connections, "font-size:22px;width:90px") . "</td>\n\t\t<td> </td>\n\t</tr>\t\t\t\t\t\t\t\n\t<tr>\n\t\t<td colspan=2><hr></td>\n\t</tr>\t\n\t<tr>\n\t\t<td colspan=2><div style='font-size:30px'>INNODB:</td>\n\t</tr>\t\t\n\t\t\t\t\n<tr>\n\t\t<td class=legend style='font-size:22px'>{innodb_buffer_pool_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_innodb_buffer_pool_size", $zarafa_innodb_buffer_pool_size, "font-size:22px;width:90px") . " M</td>\n\t\t<td width=1%>" . help_icon("{zarafa_innodb_buffer_pool_size}") . "</td>\n\t</tr>\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{query_cache_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_query_cache_size", $zarafa_query_cache_size, "font-size:22px;width:90px") . " M</td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{innodb_log_file_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_innodb_log_file_size", $zarafa_innodb_log_file_size, "font-size:22px;width:90px") . " M</td>\n\t\t<td width=1%>" . help_icon("{zarafa_innodb_log_file_size}") . "</td>\n\t</tr>\t\n\t<tr>\n\t\t<td class=legend style='font-size:22px'>{innodb_log_buffer_size}:</td>\n\t\t<td style='font-size:22px'>" . Field_text("zarafa_innodb_log_buffer_size", $zarafa_innodb_log_buffer_size, "font-size:22px;width:90px") . " M</td>\n\t\t<td width=1%>" . help_icon("{zarafa_innodb_log_buffer_size}") . "</td>\n\t\t\n\t</tr>\t\n\n\t<tr>\n\t\t<td colspan=3 align=right><hr>" . button("{apply}", "ZarafaTunIngApply()", 30) . "</td>\n\t</tr>\t\n</table>\n</div>\n<script>\n\tfunction EnableZarafaTuningCheck(){\n\t\tdocument.getElementById('zarafa_innodb_buffer_pool_size').disabled=true;\n\t\tdocument.getElementById('zarafa_query_cache_size').disabled=true;\n\t\tdocument.getElementById('zarafa_innodb_log_file_size').disabled=true;\n\t\tdocument.getElementById('zarafa_innodb_log_buffer_size').disabled=true;\n\t\tdocument.getElementById('zarafa_max_allowed_packet').disabled=true;\n\t\tdocument.getElementById('zarafa_max_connections').disabled=true;\n\t\t\n\t\tdocument.getElementById('read_buffer_size').disabled=true;\n\t\tdocument.getElementById('read_rnd_buffer_size').disabled=true;\n\t\tdocument.getElementById('sort_buffer_size').disabled=true;\n\t\tdocument.getElementById('thread_stack').disabled=true;\n\t\t\n\t\tdocument.getElementById('key_buffer_size').disabled=true; \n\t\tdocument.getElementById('max_tmp_table_size').disabled=true; \n\t\tdocument.getElementById('query_cache_size').disabled=true;\n\t\t\n\t\tif(document.getElementById('EnableZarafaTuning').checked){\n\t\t\tdocument.getElementById('zarafa_innodb_buffer_pool_size').disabled=false;\n\t\t\tdocument.getElementById('zarafa_query_cache_size').disabled=false;\n\t\t\tdocument.getElementById('zarafa_innodb_log_file_size').disabled=false;\n\t\t\tdocument.getElementById('zarafa_innodb_log_buffer_size').disabled=false;\n\t\t\tdocument.getElementById('zarafa_max_allowed_packet').disabled=false;\n\t\t\tdocument.getElementById('zarafa_max_connections').disabled=false;\t\n\t\t\tdocument.getElementById('read_buffer_size').disabled=false;\n\t\t\tdocument.getElementById('read_rnd_buffer_size').disabled=false;\n\t\t\tdocument.getElementById('sort_buffer_size').disabled=false;\n\t\t\tdocument.getElementById('thread_stack').disabled=false;\t\n\t\t\tdocument.getElementById('key_buffer_size').disabled=false; \n\t\t\tdocument.getElementById('max_tmp_table_size').disabled=false; \n\t\t\tdocument.getElementById('query_cache_size').disabled=false;\n\t\t}\n\t\n\t}\n\tvar x_ZarafaTunIngApply= function (obj) {\n\t\tvar tempvalue=obj.responseText;\n\t\tif(tempvalue.length>3){alert(tempvalue);}\n\t\t\n\t\t}\t\n\t\n\tfunction ZarafaTunIngApply(){\n\t\tvar XHR = new XHRConnection();\n\t\tif(document.getElementById('EnableZarafaTuning').checked){\n\t\t\tXHR.appendData('EnableZarafaTuning',1);}else{XHR.appendData('EnableZarafaTuning',0);}\n\t\t\tXHR.appendData('zarafa_innodb_buffer_pool_size',document.getElementById('zarafa_innodb_buffer_pool_size').value);\n\t\t\tXHR.appendData('zarafa_query_cache_size',document.getElementById('zarafa_query_cache_size').value);\n\t\t\tXHR.appendData('zarafa_innodb_log_file_size',document.getElementById('zarafa_innodb_log_file_size').value);\n\t\t\tXHR.appendData('zarafa_innodb_log_buffer_size',document.getElementById('zarafa_innodb_log_buffer_size').value);\n\t\t\tXHR.appendData('zarafa_max_allowed_packet',document.getElementById('zarafa_max_allowed_packet').value);\n\t\t\tXHR.appendData('zarafa_max_connections',document.getElementById('zarafa_max_connections').value);\n\t\t\tXHR.appendData('key_buffer_size',document.getElementById('key_buffer_size').value); \n\t\t\tXHR.appendData('max_tmp_table_size',document.getElementById('max_tmp_table_size').value); \n\t\t\tXHR.appendData('query_cache_size',document.getElementById('query_cache_size').value);\n\t\t\tXHR.appendData('read_buffer_size',document.getElementById('read_buffer_size').value);\n\t\t\tXHR.appendData('read_rnd_buffer_size',document.getElementById('read_rnd_buffer_size').value);\n\t\t\tXHR.appendData('sort_buffer_size',document.getElementById('sort_buffer_size').value);\n\t\t\tXHR.appendData('thread_stack',document.getElementById('thread_stack').value);\n\t\t\tXHR.sendAndLoad('{$page}', 'POST',x_ZarafaTunIngApply);\n\t\n\t}\n\t\nEnableZarafaTuningCheck();\n</script>\n\t"; echo $tpl->_ENGINE_parse_body($html); }
die; } if ($argv[1] == '--rebuild-zarafa') { rebuild_zarafa(); die; } if ($argv[1] == '--squid-events-purge') { squid_events_purge(); die; } if ($argv[1] == '--mysqlcheck') { mysqlcheck($argv[2], $argv[3]); die; } $sock = new sockets(); $q = new mysqlserver(); $MysqlConfigLevel = $sock->GET_INFO("MysqlConfigLevel"); if (!is_numeric($MysqlConfigLevel)) { $MysqlConfigLevel = 0; } $EnableZarafaTuning = $sock->GET_INFO("EnableZarafaTuning"); if (!is_numeric($EnableZarafaTuning)) { $EnableZarafaTuning = 0; } $users = new usersMenus(); if ($users->ZARAFA_INSTALLED) { if ($EnableZarafaTuning == 1) { $MysqlConfigLevel = -1; } } if ($MysqlConfigLevel > 0) {
function multi_start($ID) { $q = new mysqlserver(); $GLOBALS["MULTI"] = true; $GLOBALS["SHOWLOGONLYFOR"] = $ID; multi_monit($ID); multi_create_cache(); $q->mysql_multi(); echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID}..\n"; $pidfile = "/var/run/mysqld/mysqld{$ID}.pid"; echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} PID:{$pidfile}..\n"; $unix = new unix(); if ($unix->process_exists($unix->get_pid_from_file($pidfile))) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} already running...\n"; return; } $chmod = $unix->find_program("chmod"); $ini = new iniFrameWork("/etc/mysql-multi.cnf"); $database_path = $ini->get("mysqld{$ID}", "datadir"); if (is_file("{$database_path}/error.log")) { @unlink("{$database_path}/error.log"); } echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} database={$database_path}\n"; $cmd = "{$chmod} 755 {$database_path}"; exec($cmd, $results); $mysqld_multi = $unix->find_program("mysqld_multi"); $cmd = "{$mysqld_multi} --defaults-file=/etc/mysql-multi.cnf start {$ID} --verbose --no-log 2>&1"; if (is_file("{$database_path}/maria_log_control")) { @unlink("{$database_path}/maria_log_control"); } if ($GLOBALS["VERBOSE"]) { echo "{$cmd}\n"; } exec($cmd, $results); while (list($index, $ligne) = each($results)) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$ligne}\n"; } for ($i = 0; $i < 4; $i++) { sleep(1); if ($unix->process_exists(multi_get_pid($ID))) { sleep(1); break; } } if (!$unix->process_exists(multi_get_pid($ID))) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} failed..\n"; } else { $q = new mysql_multi($ID); $q->QUERY_SQL_NO_BASE("create user 'mysqld_multi'@'127.0.0.1' identified by 'mysqld_multi'"); $q->QUERY_SQL_NO_BASE("create user 'mysqld_multi'@'localhost' identified by 'mysqld_multi'"); $q->QUERY_SQL_NO_BASE("create user 'grant shutdown on *.* to mysqld_multi'"); $q = new mysqlserver_multi($ID); $q->setssl(); } if (is_file("{$database_path}/error.log")) { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$database_path}/error.log\n"; $f = explode("\n", @file_get_contents("{$database_path}/error.log")); while (list($index, $ligne) = each($f)) { if (trim($ligne) == null) { continue; } if (preg_match("#^[0-9]+\\s+[0-9\\:]+\\s+(.+)#", $ligne, $re)) { $ligne = $re[1]; } echo "Starting......: " . date("H:i:s") . " {$ligne}\n"; } } else { echo "Starting......: " . date("H:i:s") . " Mysql instance id:{$ID} {$database_path}/error.log no such file\n"; } }