<?php $nome_fonte = $argv[0]; $url = $argv[1]; $unique = $argv[2]; createLocalImage($url, $unique); function createLocalImage($url, $unique) { $extension = ".png"; $filename = $unique . $extension; $path = "images/"; $img = @imagecreatefrompng($url); imagepng($img, $path . $filename); chown($path . $filename, "apache"); }
/** * inicio * * Processa toda a logica e loops em cima das categorias, subcagegorias (quando tiver), graficos, chaves, chaves dinamicas (quando tive) * analisa se o grafico plotara apenas uma chave e 3 medias ou varias chaves e apenas suas medias. * * @param (type) (id) identificador do e-mail. */ function createHost($codhost) { $host = new stdClass(); $dadosEmpresa = buscaEmpresa($codhost); $host->codhost = $codhost; $host->nomeEmpresa = $dadosEmpresa["empresa_nome"]; $host->nome = $dadosEmpresa["host_nome"]; $host->headerPrincipal = 'RESUMO DE PERFORMANCE DO SERVIDOR - ' . $dadosEmpresa["host_nome"]; $host->responsavel = $dadosEmpresa["responsavel_nome"]; $host->emailResponsavel = $dadosEmpresa["responsavel_email"]; $host->CopiasControladas = getCopiasControladas($codhost); $host->ArrayJson = []; $host->ArrayEventos = []; $host->categoria = []; $host->subcategoria = []; $host->images = []; $host->numMaxPeriodAnalise = getMaxPeriodAnalise(); $host->numMaxObjetosGrafico = getMaxObjetosGrafico(); $host->numeroMesesEventos = numMaxPeriodoEvento(); /** * Categorias * * Processa pelas categorias, cada categoria tem uma ordem de execucao */ $ArrayCategorias = buscaCategorias($codhost); foreach ($ArrayCategorias as $categoria) { debug("<hr>"); debugl("[Categoria]" . $categoria["nome"]); /** * SubCategoria/Instancia * * Verifica quais chaves possuem dois espacos em branco ou o caracter de percentual (%), * Caso retorne alguma chave o objeto pode ter uma subcagegoria/instancia. */ $ArrayPossiveisInstancias = buscaPossiveisInstancias($codhost, $categoria["categoria_id"], $host->numMaxPeriodAnalise); if (is_null($ArrayPossiveisInstancias)) { $ArrayPossiveisInstancias[]["subcategoria"] = null; } /** * SubCategorias/Instancias * * Processa cada subcategoria/instancia */ debugl("Instancias: " . count($ArrayPossiveisInstancias)); foreach ($ArrayPossiveisInstancias as $instancia) { $nome_instancia = $instancia["subcategoria"]; debugl("[SubCategoria]" . $instancia["subcategoria"]); /** * Graficos da Categoria/subcategoria * * Busca os graficos */ $ArrayGraficos = buscaGraficos($codhost, $categoria["categoria_id"]); /** * Graficos da Categoria/subcategoria * * Processa cada grafico */ foreach ($ArrayGraficos as $grafico) { debug("<hr>"); /** * Altera o json com o nome do titulo e subtitulo do grafico */ $json = $grafico["json"]; /** * Busca as chaves cadastradas neste grafico */ $ArrayChavesCadastradas = buscaChavesCadastradas($codhost, $grafico["grafico_id"]); foreach ($ArrayChavesCadastradas as $chave) { debugl("[ChaveBusca]" . $chave["valor"]); } /** * Busca apenas as maiores chaves nao apenas 5, dependendo do parametro. * Nome da instancia pra filtrar apenas as chaves que possuem o nome da instancia tambem (se existir instancia) */ $ArrayCincoMaioresChaves = buscaCincoMaioresChaves($codhost, $nome_instancia, $ArrayChavesCadastradas, $host->numMaxObjetosGrafico, $host->numMaxPeriodAnalise); $QtdEventos = buscaQtdEventos($codhost, $ArrayChavesCadastradas, $host->numMaxPeriodAnalise); /** * Dependendo do total de chaves retornadas, o grafico tera varias chaves ou apenas uma que entao mostrara min,med,max */ $total = count($ArrayCincoMaioresChaves); $series = array(); $categories = array(); /** * Processa cada chave encontrada */ $alterou_titulo = false; foreach ($ArrayCincoMaioresChaves as $chaveMaior) { debugl("[ChaveRetorno]" . $chaveMaior["Chave"]); //retorna a legenda da primeira chave que encontrar baseada em uma das chaves com maior valor //echo "Teste de legenda...para " . $chaveMaior["Chave"]; $legenda = null; $legendaChave = null; $legenda = buscaLegendaChaveCadastrada($ArrayChavesCadastradas, $chaveMaior["Chave"]); $legendaChave = buscaRegexObjetoNovoRegex2($chaveMaior["Chave"], $legenda); if (is_null($legendaChave)) { $legendaChave = $chaveMaior["Chave"]; } if ($alterou_titulo === false) { $titulo_grafico = $grafico["titulo"]; $subtitulo_grafico = $grafico["subtitulo"]; $titulo_grafico = buscaRegexObjetoNovoRegex2($chaveMaior["Chave"], $grafico["titulo"]); $subtitulo_grafico = buscaRegexObjetoNovoRegex2($chaveMaior["Chave"], $grafico["subtitulo"]); $json = str_replace('$titulo_grafico', $titulo_grafico, $json); $json = str_replace('$subtitulo_grafico', $subtitulo_grafico, $json); $alterou_titulo = true; } /** * Para cada chave busca seus valores, medias e datas por mes. */ $ArrayValoresChave = buscaValoresPorChave($codhost, $chaveMaior["Chave"], $host->numMaxPeriodAnalise); /** * Ponto onde decide se a legenda sera min,med,max ou o nome de cada legendaChave plotado */ if ($total > 1) { debugl("[TipoPlotagem]" . "print apenas as medias"); array_push($series, processaValoresMultiplos($legendaChave, $ArrayValoresChave)); /** * apresentar novo nome para o objeto **/ //debugl(json_encode($series, JSON_NUMERIC_CHECK)); } else { debugl("[TipoPlotagem]" . "print min/med/max"); $series = processaMedias($ArrayValoresChave); //debugl(json_encode($series, JSON_NUMERIC_CHECK)); } /** * Abrevia o array de datas de 01 para Jan por exemplo */ $categories = processaDatas($ArrayValoresChave, $host->numMaxPeriodAnalise); } /** * Faz um replace em $categorias colocando as data abreviadas no json */ debugl("Json limpo: " . $json); $json = str_replace('"$categorias"', json_encode($categories, JSON_NUMERIC_CHECK), $json); debugl("Json \$categorias: " . $json); /** * Faz um replace em $series colocando os nomes e valores de cada serie a ser plotada */ $json = str_replace('"$series"', json_encode($series, JSON_NUMERIC_CHECK), $json); debugl("Json \$series: " . $json); //debugl("? eventos ? ".$QtdEventos); //criando imagens locais (bug gmail) $url_encoded = createWebServiceURL($json); debugl("\$url_encoded: {$url_encoded}"); $imagem = createLocalImage($url_encoded); /* imagem em base64 * $imagem = createBase64Image($url_encoded); * */ /** * Armazena tudo em um unico objeto */ array_push($host->categoria, $categoria["nome"]); array_push($host->subcategoria, $instancia["subcategoria"]); array_push($host->ArrayJson, $json); array_push($host->images, $imagem); array_push($host->ArrayEventos, $QtdEventos); } } } return $host; }