dochipis 6 Denunciar post Postado Agosto 26, 2014 Olá gente. Estou com o seguinte problema: Ao ler um txt e importar para o mysql está me retornando o seguinte erro: Error 503 Backend fetch failedBackend fetch failed Segue o código: <?php ini_set("max_execution_time",-1); set_time_limit(0); ini_set('set_time_limit', 0); include("../../config.base.inc.php"); require('../inc/autoload.inc.php'); include("../inc/verifica.inc.php"); include('../../classes/config.db.inc.php'); $total = 1; $cadastrados = 0; $alterados = 0; $htmlXls = '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <style> * { font-family: Calibri, Arial, Helvetica, sans-serif; } table tr td { font-size: 11pt; } .branco{ color: #FFF; } </style> </head> <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table id="Table_01" width="1203" height="516" border="1" cellpadding="10" cellspacing="0"> <tr> <td>Data da importação:</td><td>'.date('d/m/Y H:i:s').'</td> </tr> <tr> <td>Cadastrados:</td><td>{CADASTRADO}</td> </tr> <tr> <td>Atualizado:</td><td>{ALTERADO}</td> </tr> </table> <table id="Table_01" width="1203" height="516" border="1" cellpadding="10" cellspacing="0"> <tr> <td>Item</td> <td>Nome</td> <td>Qtde</td> <td>Preço</td> <td>Situação</td> </tr>'; $linhas = file('arquivo/itens.txt'); $db = new mysqli( HOSTNAME , USUARIO , SENHA, DB ); foreach ($linhas as $linha) { list($cod_item, $nome, $modelo, $medida, $quantidade, $cod_categoria, $cod_subcategoria, $dimensoes, $especificacao, $preco, $peso, $nrfotos) = explode('{!}', $linha); $nrfotos = count( explode(',', $nrfotos)); $preco_temp = ($preco * ( $_SESSION['TAXA'] / 100 ) ); $preco_db = ($preco + $preco_temp ); $sqlExiste = "SELECT cod_item FROM produtos WHERE cod_item = '$cod_item'; " ; $resultado = $db->query( $sqlExiste ); if(!$resultado->num_rows) { $sqlInsert = "INSERT INTO produtos (`codigo`, `cod_item`, `nome`, `modelo`, `medida`, `quantidade`, `cod_categoria`, `cod_subcategoria`, `dimensoes`, `especificacao`, `preco`, `peso`, `tipo`, `nr_fotos`, `ativo`) VALUES ( NULL, '$cod_item', '$nome', '$modelo', '$medida', '$quantidade', '$cod_categoria', '$cod_subcategoria', '$dimensoes', '$especificacao', '$preco_db', $peso, '', $nrfotos, 'S' );\r\n"; $db->query( $sqlInsert ); $cadastrados++; $htmlXls .='<tr><td>'.$cod_item.'</td><td>'.$nome.'</td><td>'.$quantidade.'</td><td>R$ '.$preco_db.'</td><td bgcolor="#16E038">Cadastrado</td></tr>'; $sqlInsert = null; } else { $sqlUpadte = "UPDATE produtos SET nome = '".$nome."', modelo = '".$modelo."', medida = '".$medida."', quantidade = '".$quantidade."', cod_categoria = '".$cod_categoria."', cod_subcategoria = '".$cod_subcategoria."', dimensoes = '".$dimensoes."', especificacao = '".$especificacao."', preco = '".$preco_db."', peso = '".$peso."', nr_fotos = '".$nrfotos."', ativo = 'S' WHERE cod_item = '".$cod_item. "';\r\n"; $db->query( $sqlUpadte ); $alterados++; $htmlXls .='<tr><td>'.$cod_item.'</td><td>'.$nome.'</td><td>'.$quantidade.'</td><td>R$ '.$preco_db.'</td><td bgcolor="#FAE43C">Atualizado</td></tr>'; $sqlUpadte = null; } $resultado->close(); $sqlExiste = null; } $htmlXls .= '</table></body></html>'; $htmlXls = str_replace('{CADASTRADO}', $cadastrados, $htmlXls); $htmlXls = str_replace('{ALTERADO}', $alterados, $htmlXls); $fp = fopen('arquivo/importacao.xls', 'w'); fwrite($fp, $htmlXls); fclose($fp); echo "<pre><h4>Total de registros cadastrados: <b>".$cadastrados."</b></h4>"; echo "<h4>Total de registros atualizados: <b>".$alterados."</b></h4>"; echo "<h4>Relatório da importação: <b><a href='arquivo/importacao.xls'>baixar relatório</a></b></h4>"; echo "<p><a href='importar.php'>« importar outro arquivo</a></p>"; Tem algo de errado no script, se tiver uma maneira mais correta de fazer por favor me mostrem. flws... Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Agosto 26, 2014 Qual o tamanho do 'itens.txt'? Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 26, 2014 2MB com 3000 linhas O script está causando o seguinte erro: Error 503 Backend fetch failed Backend fetch failed Guru Meditation: XID: 67486626 Varnish cache server Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Agosto 27, 2014 Tá difícil, parece que não há erro no seu código. O jeito é ir testando parte do código e ver em que ponto ele começa a apresentar o erro. Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 27, 2014 No servidor local o script executa sem problemas, mas se eu executar ele no servidor onde o site está hospedado, retorna esse erro. É como se o servidor parasse de responder. Será que existe alguma maneira do script executar mais rápido? flws... Compartilhar este post Link para o post Compartilhar em outros sites
Massaki 47 Denunciar post Postado Agosto 27, 2014 Então provavelmente o servidor bloqueia o ini_set() de algumas variáveis, e deve estar travando por causa da quantidade de linhas na execução. Experimente processar com menos linhas para saber se é isso mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
dochipis 6 Denunciar post Postado Agosto 27, 2014 Fiz um teste com o seguinte código(php.net): if (ob_get_level() == 0) ob_start(); for ($i = 0; $i<10; $i++){ echo "<br> Line to show."; echo str_pad('',4096)."\n"; ob_flush(); flush(); sleep(1); } echo "Done."; ob_end_flush(); E o resultado não é impresso linha por linha como deveria, executa o script todo primeiro para depois mostrar. Tem algum modo de alterar isso? flws.. Compartilhar este post Link para o post Compartilhar em outros sites