Código muito grande não consegue executar todo
Como fazer para executar esse script, sem fazer o mysql travar e sem dar timeout? Alguem tem alguma ideia?
<?php
$erro = 0;
function conectar()
{
$hostname = '10.121.240.97';
$username = ;
$password = ;
$db = 'sci';
$conn = mysql_connect($hostname, $username, $password) or die('erro no servidor');
mysql_select_db($db, $conn) or die('erro de banco');
return $conn;
}
function desconectar($conn)
{
mysql_close($conn);
}
function geraArray(){
$arquivos = array(0=>array('url'=> 'arquivos/Relatorio_Geral_DSL_AM.gz',
'nome' => 'Relatorio_Geral_DSL_AM.txt',
'tabela' => 'vlxEquipamentosAM'
),
1=>array('url'=> 'arquivos/Relatorio_Geral_DSL_AL.gz',
'nome' => 'Relatorio_Geral_DSL_AL.txt',
'tabela' => 'vlxEquipamentosAL'
),
2=>array('url'=> 'arquivos/Relatorio_Geral_DSL_PB.gz',
'nome' => 'Relatorio_Geral_DSL_PB.txt',
'tabela' => 'vlxEquipamentosPB'
),
3=>array('url'=> 'arquivos/Relatorio_Geral_DSL_SE.gz',
'nome' => 'Relatorio_Geral_DSL_SE.txt',
'tabela' => 'vlxEquipamentosSE'
),
4=>array('url'=> 'arquivos/Relatorio_Geral_DSL_MA.gz',
'nome' => 'Relatorio_Geral_DSL_MA.txt',
'tabela' => 'vlxEquipamentosMA'
),
5=>array('url'=> 'arquivos/Relatorio_Geral_DSL_RN.gz',
'nome' => 'Relatorio_Geral_DSL_RN.txt',
'tabela' => 'vlxEquipamentosRN'
),
6=>array('url'=> 'arquivos/Relatorio_Geral_DSL_PA.gz',
'nome' => 'Relatorio_Geral_DSL_PA.txt',
'tabela' => 'vlxEquipamentosPA'
),
7=>array('url'=> 'arquivos/Relatorio_Geral_DSL_ES.gz',
'nome' => 'Relatorio_Geral_DSL_ES.txt',
'tabela' => 'vlxEquipamentosES'
),
8=>array('url'=> 'arquivos/Relatorio_Geral_DSL_CE.gz',
'nome' => 'Relatorio_Geral_DSL_CE.txt',
'tabela' => 'vlxEquipamentosCE'
),
9=>array('url'=> 'arquivos/Relatorio_Geral_DSL_PE.gz',
'nome' => 'Relatorio_Geral_DSL_PE.txt',
'tabela' => 'vlxEquipamentosPE'
),
10=>array('url'=> 'arquivos/Relatorio_Geral_DSL_BA.gz',
'nome' => 'Relatorio_Geral_DSL_BA.txt',
'tabela' => 'vlxEquipamentosBA'
),
11=>array('url'=> 'arquivos/Relatorio_Geral_DSL_MG.gz',
'nome' => 'Relatorio_Geral_DSL_MG.txt',
'tabela' => 'vlxEquipamentosMG'
),
12=>array('url'=> 'arquivos/Relatorio_Geral_DSL_RJ.gz',
'nome' => 'Relatorio_Geral_DSL_RJ.txt',
'tabela' => 'vlxEquipamentosRJ'
)
);
return $arquivos;
}
function geraArquivosTxT($arquivos){
$tamanho = sizeof($arquivos);
for ($i=0; $i<$tamanho; $i++){
$arquivoURL = $arquivos[$i]['url'];
$arquivoNome = $arquivos[$i]['nome'];
$conteudo = gzopen("$arquivoURL","r");
file_put_contents("arquivos/txt/$arquivoNome", $conteudo);
gzclose($conteudo);
}
return $tamanho;
}
function apagaTudo($arquivos, $tamanho, &$erro, $conn){
for ($i=0; $i<$tamanho; $i++){
$query = "TRUNCATE TABLE ".$arquivos[$i]['tabela'];
if (!mysql_query($query, $conn)) {
$erro++;
}
}
}
function carga($arquivos, $tamanho, &$erro, $conn){
echo("Data Inicial: " . date("H:i:s")."<br>");
for ($i=0; $i<$tamanho; $i++){
$query = "LOAD DATA LOCAL INFILE 'arquivos/txt/".$arquivos[$i]['nome']."'
INTO TABLE `".$arquivos[$i]['tabela']."`
FIELDS TERMINATED BY '|' ENCLOSED BY ''
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(`UF`, `LOCAL`, `ESTACAO`, `RACK_BAST`, `ID_RACK`, `DB_ID_RACK`, `STATUS_RACK`, `FILA`, `POSICAO_LADO`, `CATEGORIA_RACK`, `FABRICANTE`, `ID_EQUIP_GER_RACK`, `SIST_GERENCIA`, `NOME_ASSOCIACAO`, `NOME_OBJ_ASSOC`, `TIPO_OBJ_ASSOC`, `ACTIVATION_ADAPTER_NAME`, `IS_AVAILABLE`, `MODALIDADE_DSLAM`, `POINT_CODE_RACK`, `COMENT_RACK`, `SHELF`, `ID_SHELF`, `DB_ID_SHELF`, `STATUS_SHELF`, `CATEGORIA_SHELF`, `MODELO`, `ID_EQP_SHELF`, `SIS_GERE_SHELF`, `REVISAO`, `ALTURA`, `LARGURA`, `PROFUND`, `DIST_BASE`, `DIST_FRENTE`, `DIST_ESQ`, `AUTOMATION`, `POINT_CODE_SHELF`, `NOME_LEGADO`, `COMENT_SHELF`, `TIPO_UPLINK_SHELF`, `LIMITE_DESIG`, `MODALIDADE`, `VLAN`, `VP`, `COD_EILD`, `NETWORK_NAME_SHELF`, `ANDAR`, `SALA`, `RACK_SHELF`, `ULTIMA_REVISAO`, `ULTIMA_ATUALIZACAO`, `SHELF_USO`, `NUMERO_DE_PORTAS`, `DESCRICAO`, `OCUPACAO_SLOTS`, `DATA_PEDIDO_SHELF`, `DATA_PROGR_SHELF`, `DATA_PREV_INSTAL_SHELF`, `DATA_CONTRAT_SHELF`, `DATA_INSTAL_SHELF`, `DATA_ATIV_SHELF`, `DATA_DESATIV_SHELF`, `CLASSE_ATIVO`, `ID_SAP_SHELF`, `NUMERO_SERIE_SHELF`, `NUMERO_PEDIDO`, `ITEM_PEDIDO`, `NUMERO_RESERVA`, `ITEM_RESERVA`, `NUMERO_IMOBILIZADO`, `EMPRESA`, `ESTADO_CONSERV`, `FLAG_ALIENA`, `STATUS_ALIENA`, `MOTIVO_ALIENA`, `DB_ID_PLACA`, `SLOT`, `STATUS_PLACA`, `CARD_USO`, `NETWORK_NAME_CARD`, `CARD_DEFAULT_PRIMARY_PROFILE`, `CARD_DEFAULT_SECUNDARY_PROFILE`, `CATEGORIA_PLACA_DSL`, `CATEGORIA_PLACA`, `TIPO_DSL`, `BLOQ_SERVICO`, `SLOT_SUB_PLACA`, `ID_PORTA`, `DB_ID_PORTA`, `PORT_ACCESS_ID`, `STATUS_PORTA`, `CUSTOMER_FACING`, `IP_ADDR`, `DATA_PEDIDO_PLACA`, `DATA_PROGR_PLACA`, `DATA_PREV_INSTAL_PLACA`, `DATA_CONTRAT_PLACA`, `DATA_INSTAL_PLACA`, `DATA_ATIV_PLACA`, `DATA_DESATIV_PLACA`, `NUMERO_SERIE_PLACA`, `CODIGO_BARRAS_PLACA`, `NUMERO_LOTE_PLACA`, `LARGURA_BANDA`, `TIPO_CONECTOR`, `CANALIZACAO`, `DESCR_PORTA`, `FUNC_DSL`, `PLANNED_DATE`, `PLANNED_TG_MEMBER`, `TG_MEMBER`, `CABLE_ID`, `SEGMENT_ID`, `PENDING_DISCONNECT`, `MODEM`, `VERTICAL`, `HORIZONTAL`, `REGUA`, `PINO`, `VERTICAL_EQN_VOZ`, `HORIZONTAL_VOZ`, `REGUA_VOZ`, `PINO_VOZ`, `VPVC_LOC`, `MOD_VELOX`, `VELOC_MAX_DLOAD`, `SHELF_NOME_ATM_SW`, `SHELF_ATM_SW`, `SHELF_SLOT_ATM_SW`, `SHELF_PORTA_ATM_SW`, `ID_CIRCUITO`, `REVISAO_CIRC`, `TIPO_CIRC`, `PRIORIDADE`, `LARGURA_DE_BANDA`, `AJUSTE_FAIXA`, `TOPOLOGIA`, `QTD_MEMBROS`, `MEMBRO_BW`, `STATUS_CIRC`, `TRUNK_GROUP`, `PONTA_A_SITE`, `PONTA_Z_SITE`, `LEG`, `SEQUENCE`, `A_SITE`, `CONNECTIVITY`, `Z_SITE`, `CHANNEL`, `IN_SERVICE`, `COMENT_CIRC`, `ID_CIRC_PEND`, `REVISAO_CIRC_PEND`, `TIPO_CIRC_PEND`, `PRIO_CIRC_PEND`, `LARGURA_BANDA_CIRC_PEND`, `AJUSTE_FAIXA_PEND`, `TOPOLOGIA_CIRC_PEND`, `QTD_MEMBROS_CIRC_PEND`, `MEMBER_BW_CIRC_PEND`, `STATUS_CIRC_PEND`, `TRUNK_CIRC_PEND`, `PONTA_A_PEND`, `PONTA_Z_PEND`, `LEG_CIRC_PEND`, `SEQUENCE_CIRC_PEND`, `A_SITE_CIRC_PEND`, `CONNECT_CIRC_PEND`, `Z_SITE_CIRC_PEND`, `CHANNEL_CIRC_PEND`, `COMENT_CIRC_PEND`, `ID_TELEMAR`, `IDENTIFICADOR`, `STATUS_SERVICE`, `CATEGORIA_SERVICE`, `NRC`, `NOME`, `TEL_VINCULADO`, `NUMERO_CENTRAL`, `TYPE`, `REVISION`, `VELOC_COM`, `VELOC_DLOAD`, `VELOC_UPLOAD`, `PPP_PROTO`)";
if (!mysql_query($query, $conn)) {
$erro++;
}
}
atualizaLocalidades($arquivos, 7, $erro, $conn);
}
function atualizaLocalidades($arquivos, $tamanho, &$erro, $conn){
for ($i=0; $i<$tamanho; $i++){
$query = "INSERT INTO vlxLocalidades(siglaLocalidade, Estados_idEstado)
SELECT DISTINCT LOCAL,
idEstado
FROM `".$arquivos[$i]['tabela']."`
INNER JOIN Estados ON Estados.sigla = UF
WHERE LOCAL NOT IN (SELECT siglaLocalidade FROM vlxLocalidades)";
if (!mysql_query($query, $conn)) {
$erro++;
}
}
atualizaEstacoes($arquivos, 7, &$erro, $conn);
}
function atualizaEstacoes($arquivos, $tamanho, &$erro, $conn){
for ($i=0; $i<$tamanho; $i++){
$query = "INSERT INTO vlxEstacoes(siglaEstacao, vlxLocalidades_idLocalidade)
SELECT DISTINCT ESTACAO,
idLocalidade
FROM `".$arquivos[$i]['tabela']."`
INNER JOIN vlxLocalidades ON vlxLocalidades.siglaLocalidade = LOCAL
WHERE ESTACAO <> '' AND
ESTACAO NOT IN (SELECT siglaEstacao FROM vlxEstacoes)";
if (!mysql_query($query, $conn)) {
echo $query.'<br>';
$erro++;
}
}
echo("Data Final: " . date("H:i:s")."<br>");
}
function validaBanco($arquivos, $tamanho, $conn){
$estados = array();
for($i=0; $i<$tamanho; $i++){
$query = "SELECT COUNT(1) as qtd
FROM " . $arquivos[$i]['tabela'];
$result = mysql_query($query, $conn);
$qtd = mysql_result($result, 0, "qtd");
$estados[$arquivos[$i]['tabela']] = $qtd;
}
}
function commit(&$erro, $conn){
if($erro == 0){
mysql_query("COMMIT", $conn);
return 1;
}else{
mysql_query("ROLLBACK", $conn);
return 0;
}
}
$arquivos = geraArray();
$tamanho = geraArquivosTxT($arquivos);
$conn = conectar();
//mysql_query("START TRANSACTION", $conn);
//apagaTudo($arquivos, 13, $erro, $conn);
carga($arquivos, 7, $erro, $conn);
//validaBanco($arquivos, 13, $conn);
?>Discussão (5)
Carregando comentários...