#!/usr/bin/php -q = 2) && ($horaAtual < 3); $fileProcess = "/tmp/manutencao_$dataFile.mnt"; $fileLog = "/var/log/asterisk/manutencao_simples.log"; /* * Configuração do banco de dados. Deixe a variável $str para pegar o valor padrao */ $str = ''; //$str = sprintf( "host='%s' port='%s' dbname='%s' user='%s' password='%s'","127.0.0.1", "5432", "pbx", "contacte", "ctepgSQL" ); if (!$str) { $str = GetDefStrDb(); } /* * Realiza a conexao ao banco de daodos. */ $dbcon = pg_connect($str); //verifica se a conexao foi criada com sucesso. $statusCon = pg_connection_status($dbcon); if ($statusCon === 0) { /* * Inicia a operação de log */ $log = @OpenLogDB($fileLog); if (!@EmExecucao($fileProcess)) { @IniciaExec($fileProcess); if ($fazerCopia) { @ApagaDacs($dbcon); } if ($fazerCopia) { @ApagaBilhetes($dbcon); } if ($fazerCopia) { @ApagaBilhetesComplemento($dbcon); } if ($fazerCopia) { @ImportaBloqueioAnatel($dbcon); } @MantemDb($dbcon); @EncerraExec($fileProcess); } else { @__WriteLog__("EmExecucao", "Script já em execução", false, true); } /* * Fecha a conexao com banco de dados */ @CloseDB($dbcon); /* * Finaliza o log */ @CloseLogDB(); } function IniciaExec($filename) { @file_put_contents($filename, "xxxxxxx\n"); } function EncerraExec($filename) { @unlink($filename); } function __WriteLog__($nomeProc, $msg, $status, $final = false) { $log = $GLOBALS["log"]; $str = sprintf("[%s] [%s] [%s] [%s]%s", $nomeProc, date("d/m/Y H:i:s"), $msg, ($status ? "ok" : "er"), ($final ? "\n\n" : "\n")); fwrite($log, $str); } function CloseDB($dbcon) { @pg_close($dbcon); } function CloseLogDB() { $log = $GLOBALS["log"]; fclose($log); } function ApagaDacs($dbcon) { $numDias = DIAS_APAGAR; $msg = ''; $nomeProc = "ApagaDacs"; __WriteLog__($nomeProc, "Inicio Transação", true); /* * */ $result = 0; $beginTran = pg_query($dbcon, 'begin'); $sql = "delete from ast_eventos_dacs a where cast(to_timestamp(uid1::numeric) as date) < (now()::date - $numDias) and exists(select '' from pbx_eventos_dacs where id = a.id)"; if ($beginTran) $result = pg_query($dbcon, $sql); $numRegDel = pg_affected_rows($result); if ($result) { @pg_query($dbcon, 'commit'); $msg = "operação realizada com sucesso! Registros excluidos: $numRegDel"; __WriteLog__($nomeProc, $msg, true); return true; } else { if ($beginTran) { @pg_query($dbcon, 'rollback'); } $msg = "Não foi possível realizar a operação."; $erro = pg_last_error($dbcon); // pg_last_error($dbcon); // error_get_last(); $msg .= (!empty($erro) ? " Erro: " . $erro["message"] : ""); __WriteLog__($nomeProc, $msg, false); return false; } } function ApagaBilhetes($dbcon) { $numDias = DIAS_APAGAR; $msg = ''; $nomeProc = "ApagaBilhetes"; __WriteLog__($nomeProc, "Inicio Transação", true); /* * */ $result = 0; $beginTran = pg_query($dbcon, 'begin'); $sql = "delete from ast_bilhetes a where calldate::date < (now()::date - $numDias) and exists(select '' from pbx_bilhetes where id_bilhetes = a.id_bilhetes)"; if ($beginTran) $result = pg_query($dbcon, $sql); $numRegDel = @pg_affected_rows($result); if ($result) { $result = pg_query($dbcon, 'commit'); $msg = "Operação realizada com sucesso! Registros excluidos: $numRegDel"; __WriteLog__($nomeProc, $msg, true); return true; } else { if ($beginTran) { pg_query($dbcon, 'rollback'); } $msg = "Não foi possível realizar a operação."; $erro = pg_last_error($dbcon); // error_get_last(); $msg .= (!empty($erro) ? " Erro: " . $erro["message"] : ""); __WriteLog__($nomeProc, $msg, false); return false; } } function ApagaBilhetesComplemento($dbcon) { $numDias = DIAS_APAGAR; $msg = ''; $nomeProc = "ApagaBilhetesComplemento"; __WriteLog__($nomeProc, "Inicio Transação", true); /* * */ $result = 0; $beginTran = pg_query($dbcon, 'begin'); $sql = "delete from ast_bilhetes_complemento a where data_registro::date < (now()::date - $numDias) and exists(select '' from pbx_bilhetes_complemento where id = a.id)"; if ($beginTran) { $result = pg_query($dbcon, $sql); } $numRegDel = @pg_affected_rows($result); if ($result) { $result = pg_query($dbcon, 'commit'); $msg = "Operação realizada com sucesso! Registros excluidos: $numRegDel"; __WriteLog__($nomeProc, $msg, true); return true; } else { if ($beginTran) { pg_query($dbcon, 'rollback'); } $msg = "Não foi possível realizar a operação."; $erro = pg_last_error($dbcon); // error_get_last(); $msg .= (!empty($erro) ? " Erro: " . $erro["message"] : ""); __WriteLog__($nomeProc, $msg, false); return false; } } function OpenLogDB($nomeArq = "") { $arq = empty($nomeArq) ? "log_apaga_bilhtes_" . date('d_m_Y') : $nomeArq; return fopen($arq, 'a+'); } function MantemDb($conexao) { global $fazerCopia; $nomeProc = "MantemDb"; __WriteLog__($nomeProc, "Inicio Manutenção", true); $fileName = "/var/log/asterisk/simples_vacuum.log"; if ($fazerCopia) { $comando = "vacuumdb pbx -fzv &> $fileName"; } else { $comando = "vacuumdb pbx -zv &> $fileName"; } $msg = ""; system($comando, $msg); $arq = file_get_contents($fileName); $status = strpos($arq, 'FATAL') === false; __WriteLog__($nomeProc, "Manutenção Finalizada!Comando: $comando Msg: $msg", $status, true); } function EmExecucao($filename) { return file_exists($filename); } function ImportaBloqueioAnatel($dbcon) { $query = "insert into pbx_televendas_reg(tlvb_id,tlvb_mes,tlvb_data,src,dst,tlvb_status,tlvb_msg,data_reg) select tlvb_id,tlvb_mes,tlvb_data,src,dst,tlvb_status,tlvb_msg,data_reg from pbx_televendas_bloqueio a where tlvb_mes = (extract('month' from now()) - 1) and not exists(select '' from pbx_televendas_reg where tlvb_id = a.tlvb_id); delete from pbx_televendas_bloqueio a where tlvb_mes = (extract('month' from now()) - 1) and exists(select '' from pbx_televendas_reg where tlvb_id = a.tlvb_id);"; pg_query($dbcon, $query); } ?>