Ir para conteúdo
Fórum Script Brasil
  • 0

Conexão com Mysql


Gisele.Passoni

Pergunta

Boa tarde, pessoal!

Estou com uma dúvida com relação à conexão do banco mysql com php. Não sei exatamente quando devo fechar a conexão e se há necessidade de liberar dados da memória (e como se faz isso). Já pesquisei em vários sites mas as respostas são variadas e só me confundem. E agora estou terndo um problema na hora de gerar uns relatórios que fiz em php+mysql. Tem horas que gera normalmente mas tem horas que fica carregando... carregando... e não carrega. Um técnico daqui de onde trabalho disse que está sobrecarregando o servidor quando tento executar o script do relatório, e mesmo estando fechada a janela de carregamento do mesmo, o processo ainda fica rodando... isso teria alguma coisa a ver com a forma de conectar e fechar o banco?

Aguardo resposta!!

Obrigada!

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Gisele,boa noite!

Quanto as conexões,a menos que sejam setadas como persistentes,são fechadas após a execução do script.

Segue um link do php.net para melhor entendimento:conexoes persistentes - php.net

O que pode estar sobrecarregando o servidor,na verdade,são suas queries. Como são relatórios,suponho que haja diversos joins entre as tabelas,certo?Uma query mal montada pode sobrecarregar e muito o servidor. Entretanto não excluiria a possibilidade de ser o script,como o colega Maikeldld citou acima.

Faz uma análise das queries,talvez haja um left join,right join desnecessário e que esteja causando esse problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia!!

Segue o código:

<? include "conecta.php";

$consulta1 = "SELECT a.grupo, a.id as idgrupo

FROM pes_grupo a, pes_salas b, pes_grupo_salas c

WHERE (a.id_pesquisa = '3' or a.id_pesquisa = '4')

AND a.id = c.id_grupo

AND b.id = c.id_sala

AND (b.id_curso ='20' or b.id_curso ='23') GROUP BY a.grupo";

$resultado1= mysql_query($consulta1, $conexao);

$reg1 = mysql_num_rows($resultado1);

if($reg1 > 0 )

{

for($i=1; $i<=$reg1; $i++)

{

$dados1 = mysql_fetch_array($resultado1);

$consulta2= "select * from pes_grupo where (id_pesquisa = '3' or id_pesquisa = '4')

and id =" . $dados1['idgrupo'].

" and grupo <> 'Resposta voluntária'

and grupo <> 'Queremos saber sua opinião sobre:'

group by grupo

order by grupo";

$resultado2= mysql_query($consulta2, $conexao);

$reg2= mysql_num_rows($resultado2);

for($m=1; $m<=$reg2; $m++)

{

$dados2 = mysql_fetch_array($resultado2);

$consulta3 = "select * from pes_perguntas where (id_pesquisa = '3' or id_pesquisa = '4')

and alternativa <>'N'

and id_grupo = ".$dados2['id']." group by descricao order by questao";

echo '

<tr>

<td colspan=6" bgcolor="#FFFFFF"> </td>

</tr>

<tr><td colspan="6" align = "center"><b><font size =3 >'.$dados2['grupo].'</font></b></td></tr>

<tr>

<td height="1" colspan="6" bgcolor="#000000"></td>

</tr>

<tr>

<td width="16%" align="center" bgcolor="#B7B7B7"><span class="style3">Participantes</span></td>

<td width="15%" align="center" bgcolor="#B7B7B7"><span class="style3">Sempre</span></td>

<td width="19%" align="center" bgcolor="#B7B7B7"><span class="style3">Quase sempre</span></td>

<td width="18%" align="center" bgcolor="#B7B7B7"><span class="style3">Medianamente</span></td>

<td width="20%" align="center" bgcolor="#B7B7B7"><span class="style3">Raramente</span></td>

<td width="12%" align="center" bgcolor="#B7B7B7"><span class="style3">Nunca</span></td>

</tr>

';

$resultado3= mysql_query($consulta3, $conexao);

$reg3 = mysql_num_rows($resultado3);

for ($j=1; $j<=$reg3; $j++)

{

$dados3 = mysql_fetch_array($resultado3);

$consulta4 = "SELECT COUNT( a.id_aluno ) as total1 , a.id_pergunta, a.id_grupo, c.id_curso

FROM pes_resultados a, pes_pesquisados b, pes_salas c

WHERE (a.id_pesquisa = '3' or a.id_pesquisa = '4')

AND a.id_pergunta = ".$dados3['id'].

" AND a.id_grupo =.$dados2['id].

" AND a.id_aluno = b.id_aluno

AND a.id_alternativa >0

AND b.id_sala = c.id

AND (c.id_curso ='20' or c.id_curso ='23')

GROUP BY id_grupo, id_pergunta ";

$resultado4= mysql_query($consulta4, $conexao);

$dados4 = mysql_fetch_array($resultado4);

echo '<tr>';

echo '<td colspan="6"><span class="style4">'.$dados3['descricao'].'</span></td>';

echo '</tr>';

echo '<tr>';

echo '<td align = "center" bgcolor=#DADADA">'.$dados4['total1].'</td>';

for ($k=1; $k<=5; $k++)

{

$consulta5 = "SELECT COUNT( a.id_aluno ) as total1 , a.id_alternativa,

a.id_pergunta, a.id_grupo, c.id_curso

FROM pes_resultados a, pes_pesquisados b, pes_salas c

WHERE (a.id_pesquisa = '3' or a.id_pesquisa = '4')

AND a.id_pergunta = ".$dados3['id'].

" AND a.id_grupo =.$dados2['id].

" AND a.id_aluno = b.id_aluno

AND a.id_alternativa =$k

AND c.id = b.id_sala

AND (c.id_curso ='20' or c.id_curso ='23')

GROUP BY a.id_grupo, a.id_pergunta, a.id_alternativa

";

$resultado5= mysql_query($consulta5, $conexao);

$reg5 = mysql_num_rows($resultado5);

$valor_total = $dados4['total1'];

if ($reg5==0)

{echo '<td align = "center" bgcolor=#DADADA">0.00%</td>';}

else{

$dados5 = mysql_fetch_array($resultado5);

$valor_parcial = $dados5['total1];

$p = ($valor_parcial*100) / $valor_total;

$t = number_format($p, 2, '.', '');

echo '<td align = "center" bgcolor="#DADADA">'.$dados5['total1'].'     '.$t.'%</td>';}

}

echo '</tr>';

}

}

} }

mysql_close($conexao);

?>

Link para o comentário
Compartilhar em outros sites

  • 0
for ($k=1; $k<=5; $k++)

Pode ser o seu loop de repetição que não esteja de acordo com o objetivo, já tive problemas do loop estar incorreto, dando loop's infinito e sobrecarregando o meu servidor, pelo que eu vi ai, esse loop retorna 4 resultados, não sei se é esse o objetivo ou se é para retorna 5, se for 5 tira o " = " :)

OUUU

Tenta rever esse loop de repetição.

Qualquer coisa posta ai :D

Link para o comentário
Compartilhar em outros sites

  • 0
:unsure: Wilson, quanto àquele loop, ele deverá retornar 4 mesmo... o que mais acho estranho é que tem horas que ele abre normalmente... mas, agora mesmo tentei abrí-lo e ele só fica carregando...

Existe Muitos registros no banco? e o que ele retorna não é muito grande?

caso não seja isso, peço arrego kkk

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...