Ola pessoal.
Estou com um problema bem interessante. Tenho um sistema PHP com MySQL muito antigo e um dos relatórios demora demais para ser gerado. Chega a levar em média 3 a 4 horas. Nunca me preocupei em melhorar isso, até mesmo porque não foi eu quem fiz o sistema. Mas agora, está me gerando problemas demais. Justamente porque o servidor de hospedagem que tenho o sistema, fez algumas atualizações e mudanças, inclusive no time_exception do PHP e meu sistema não consegue gerar o relatório por completo. Ele para no meio do caminho. O relatório é para fazer uma pesquisa entre um dia X e um dia Y e trazer algumas informações de exames realizados. O BD para consulta tem mais de 200mil linhas. Abaixo está o código da pesquisa. Se alguém puder me ajudar, agradeço demais!
<?php
if(file_exists("master.php")){ include("master.php");}else{ include("../master.php"); echo "<link href='../master.css' rel='stylesheet' type='text/css' />";}?><tablewidth="100%"border="0"style="border:1px solid #999999; background-color:#FFFFFF;"><?if($_POST['imprimir']==""){?><tr><td> </td><tdalign="right"><formmethod="post"action="relatorios/atendimento_empresa2.php">
<input type="hidden" name="atendimento_empresa" value="<?=$_POST['atendimento_empresa'];?>" />
<input type="hidden" name="atendimento_empresa_data_dia" value="<?=$_POST['atendimento_empresa_data_dia'];?>" />
<input type="hidden" name="atendimento_empresa_data_mes" value="<?=$_POST['atendimento_empresa_data_mes'];?>" />
<input type="hidden" name="atendimento_empresa_data_ano" value="<?=$_POST['atendimento_empresa_data_ano'];?>" />
<input type="hidden" name="atendimento_empresa_data_ate_dia" value="<?=$_POST['atendimento_empresa_data_ate_dia'];?>" />
<input type="hidden" name="atendimento_empresa_data_ate_mes" value="<?=$_POST['atendimento_empresa_data_ate_mes'];?>" />
<input type="hidden" name="atendimento_empresa_data_ate_ano" value="<?=$_POST['atendimento_empresa_data_ate_ano'];?>" />
<inputtype="hidden"name="imprimir"value="sim"/><inputtype="submit"value="imprimir"/></form></td></tr><?}?><?php
if($_POST['atendimento_empresa']!='todas') $where_init =' WHERE id = "'. $_POST['atendimento_empresa'].'"';
$empresas = mysql_query("SELECT * FROM empresas{$where_init} ORDER BY `razao`");while($selecionar =@mysql_fetch_assoc($empresas)){
$_dia = $_POST['atendimento_empresa_data_dia'];
$_mes = $_POST['atendimento_empresa_data_mes'];
$_ano = $_POST['atendimento_empresa_data_ano'];
$__dia = $_POST['atendimento_empresa_data_ate_dia'];
$__mes = $_POST['atendimento_empresa_data_ate_mes'];
$__ano = $_POST['atendimento_empresa_data_ate_ano'];
$where ="((ano > $_ano) OR ((ano = $_ano) AND (mes > $_mes)) OR ((ano = $_ano) AND (mes = $_mes) AND (dia >= $_dia))) AND ((ano < $__ano) OR ((ano = $__ano) AND (mes < $__mes)) OR ((ano = $__ano) AND (mes = $__mes) AND (dia <= $__dia)))";
$selecionar_cliente = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."') AND (opcao != 'ficha') AND ".$where." ORDER BY 'nome'");if((mysql_num_rows($selecionar_cliente)>"0")or($_POST['atendimento_empresa']!='todas')){?><tr><td><center><b>Histórico de exames da empresa <i><?=utf8_encode($selecionar['razao'])?></i> de <?=$_POST['atendimento_empresa_data_dia']?>/<?=$_POST['atendimento_empresa_data_mes']?>/<?=$_POST['atendimento_empresa_data_ano']?> até <?=$_POST['atendimento_empresa_data_ate_dia']?>/<?=$_POST['atendimento_empresa_data_ate_mes']?>/<?=$_POST['atendimento_empresa_data_ate_ano']?></b></center></td></tr><tr><td> </td></tr><tr><td><?if(mysql_num_rows($selecionar_cliente)<="0"){
echo "<tr><td>Sem histórico para esta empresa.</td></tr>";}else{
$setores = array();while($x = mysql_fetch_assoc($selecionar_cliente)){if(!in_array(trim(strtr(strtoupper($x['setor']),"áéíóúâêôãõàèìòùç","ÁÉÍÓÚÂÊÔÃÕÀÈÌÒÙÇ")), $setores)){
$conta ="1";
echo "<table width='100%' border=1>";
echo "<tr><td width='5%'> </td><td width='45%'><b>Setor:</b> ".utf8_encode($x['setor'])."</td><td width='10%'></td><td width='10%'></td></tr>";
echo "<tr><td width='5%'><center> </center></td><td width='45%'><center><b>Funcionário</b></center></td><td width='10%'><center><b>Data realização</b></center></td><td width='10%'><center><b>Exames</b></center></td></tr>";
$selecionar_adm = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exame_clinico = 'Admissional' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_adm)>"0"){while($y = mysql_fetch_assoc($selecionar_adm)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".$y['exame_clinico']."</center></td></tr>";
$conta++;}}
$selecionar_dem = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exame_clinico = 'Demissional' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_dem)>"0"){while($y = mysql_fetch_assoc($selecionar_dem)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".$y['exame_clinico']."</center></td></tr>";
$conta++;}}
$selecionar_per = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exame_clinico = 'Periódico' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_per)>"0"){while($y = mysql_fetch_assoc($selecionar_per)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".utf8_encode($y['exame_clinico'])."</center></td></tr>";
$conta++;}}
$selecionar_ret = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exame_clinico = 'Retorno ao Trabalho' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_ret)>"0"){while($y = mysql_fetch_assoc($selecionar_ret)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".$y['exame_clinico']."</center></td></tr>";
$conta++;}}
$selecionar_mud = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exame_clinico = 'Mudança Função' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_mud)>"0"){while($y = mysql_fetch_assoc($selecionar_mud)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".utf8_encode($y['exame_clinico'])."</center></td></tr>";
$conta++;}}
$selecionar_audio = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and opcao = 'audio') and ".$where);if(mysql_num_rows($selecionar_audio)>"0"){while($y = mysql_fetch_assoc($selecionar_audio)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>Audiometria</center></td></tr>";
$conta++;}}
$selecionar_ficha = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and opcao = 'atendimento') and ".$where);if(mysql_num_rows($selecionar_ficha)>"0"){while($y = mysql_fetch_assoc($selecionar_ficha)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>Atend. clínico</center></td></tr>";
$conta++;}}
$selecionar_comp = mysql_fetch_assoc(mysql_query("SELECT * FROM empresas_setores WHERE id_emp = '".$x['id_emp']."' AND setor = '".$x['setor']."' AND funcao = '".$x['funcao']."' LIMIT 1"));
$selecionar_exames = mysql_query("SELECT * FROM clientes_old WHERE (id_emp = '".$selecionar['id']."' and setor = '".$x['setor']."' and exames != '' and exames_feed != 'ausente' and opcao = 'aso') and ".$where);if(mysql_num_rows($selecionar_exames)>"0"){while($y = mysql_fetch_assoc($selecionar_exames)){
echo "<tr><td width='5%'>".$conta."</td><td width='45%'>".utf8_encode($y['nome'])."</td><td width='10%'><center>".$y['dia']."/".$y['mes']."/".$y['ano']."</center></td><td width='10%'><center>".utf8_encode($y['exames'])."</center></td></tr>";
$conta++;}}
echo "</table><br>";
$setores[]= trim(strtr(strtoupper($x['setor']),"áéíóúâêôãõàèìòùç","ÁÉÍÓÚÂÊÔÃÕÀÈÌÒÙÇ"));}}}}
echo '</td></tr>';}?></td></tr></table><?php if($_POST['imprimir']!=""){ echo "<script>window.print(); history.back();</script>";}?>
Pergunta
Felipe Schneider
Ola pessoal.
Estou com um problema bem interessante. Tenho um sistema PHP com MySQL muito antigo e um dos relatórios demora demais para ser gerado. Chega a levar em média 3 a 4 horas. Nunca me preocupei em melhorar isso, até mesmo porque não foi eu quem fiz o sistema. Mas agora, está me gerando problemas demais. Justamente porque o servidor de hospedagem que tenho o sistema, fez algumas atualizações e mudanças, inclusive no time_exception do PHP e meu sistema não consegue gerar o relatório por completo. Ele para no meio do caminho. O relatório é para fazer uma pesquisa entre um dia X e um dia Y e trazer algumas informações de exames realizados. O BD para consulta tem mais de 200mil linhas. Abaixo está o código da pesquisa. Se alguém puder me ajudar, agradeço demais!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.