Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandru

[Resolvido] PHP + MySQL = ?

Recommended Posts

Tenho uma tabela no MySql com 30 registros gravados, 9 campos e um select assim: select campo_1, campo_2 from tabela

 

Meu problema é o seguinte: quando faço esta consulta a página simplesmente trava, ou seja, fica como se eu estivesse fazendo uma consulta em uma tabela

com milhões de registros. Pior que não retorna nenhum erro, nehuma falha de conexão e as msgs de erros estão ligadas.

 

Sabe a pior? se nesta mesma consulta eu limitar para trazer 15 registros, a página mostra os resultados, mas se limitar a 16 trava!!!

 

Se a consulta que está travando for executada direto no banco, 100%, nenhuma falha mas quando passa pelo PHP trava!

 

Esta tabela não tem relacionamento, tem uma PK definida e são poucos registros. A versão do PHP é 5.1, server linux red hat, o time out do php.ini está alto .

 

Tudo isso é remoto e é onde acontece essa encrenca e localmente funciona numa boa. ACHO que é por causa de alguma limitação no buffer de entrega do PHP ou algo parecido. Alguém tem alguma idéia do que pode ser?

 

:blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. se não for nenhum problema com o 16º registro, acredito que seja problema no servidor mesmo.. Tentar reinstalar o apache, php e mysql é uma opção?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez o problema esteja na forma que você está apresentando a consulta, imagino que utilizando algum laço.

Posta ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há problemas com o 16 registro, pois em outras tabelas o problema é o mesmo. Por exemplo, uma com 20 registro, a partir do 11 ja trava a página.

 

Problema no MySQL descartei pq a consulta direto no banco funciona. Utilizando o PHP é que trava. Ainda estou pesquisando... hehe

 

O problema também não é na forma de apresentar o registro pois antes de trazer o resultado com o assoc, ou seja, na query.. já trava. A forma que estou fazendo, é direto, usando a lib mysql, sem classes.

 

 

enquanto isso, pesquisando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?
mysql_connect('host','user','senha');
mysql_select_db('banco');
$sql = 'select id_palpite, titulo from tb_palpites limit 16';
$query = mysql_query($sql);
while($assoc = mysql_fetch_assoc($query)){ 
	echo '<pre>';
	print_r($assoc);
	echo '</pre>';
}
?>

eis o bendito. Não tem mais nada na página, somente isso. Estou desconfiado do server, mas não acho argumentos..

e sigo procurando... hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também sem sucesso. O travamento acontece na execução da query, antes de mostrar o registro.

 

E pesquisando... rs Tá osso isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duas alterações que eu gostaria de sugerir:

 

$conexao = mysql_connect('host','user','senha');

mysql_select_db('banco', $conexao);

$sql = 'SELECT `id_palpite`, `titulo` FROM `tb_palpites` LIMIT 0, 16';

 

Pode ser que não mude em nada.. mas deixa o código mais organizado e evita erros :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também sem sucesso. O travamento acontece na execução da query, antes de mostrar o registro.

 

Usando PDO ao invés do mysql também trava

 

E pesquisando... rs Tá osso isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Propósito de teste:

 

1. Faça um backup da tabela (estrutura e dados)

2. Exclua a tabela (dados e estrutura)

3. Crie a tabela usando mesmo collation, charset, índices, etc.

4. Insira novos dados aleatoriamente. Acima de 50 registros ou até a mesma quantidade da tabela excluída.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rick.hjpbarcelos,

 

a consulta real não tem a cláusula limit. A coloquei porque depis de muitos testes, descobri que algumas tabelas listam todos os registros e outras não listam.

 

As que listam tudo, possuem de 2 a 3 campos com poucos registros (por volta de 20) e as que não listam tem mais ou menos 7 campos com 20, 30 registros.

 

hinom,

 

Já recriei o banco, tirei relacionamentos até tirei a PK hehe mas este não é o problema pq as consultas quando realizadas direto pela linha de comando do terminal, funciona 100%

 

Ainda pesquisando... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, vou considerar que você fez os testes consistentemente.

 

 

faça um "repair"

escopo

REPAIR TABLE TableName

exemplo

REPAIR TABLE cadastros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o erro dá no 16 registro, tente remover este registro, ou veja se não tem algo que não se aplica, tipo uma virgula fora de lugar, um ponto que não era pra ter, uma barra num campo int...

 

Se não, de um

 

echo $query;

exit();

 

E veja se a instrução tá sendo passada certinha...

 

 

Ah! Repair table é muito útil como disse o hinom.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de muito pesquisar sobre o assunto, finalmente o problema foi resolvido.

 

Seguinte: a máquina onde está o PHP é apartada da máquina que está o sever MySQL e as duas estão como VM. Durante a criação das máquinas, "ALGO SOBRENATURAL" aconteceu que limitou o tamanho do fluxo de dados entre elas. O admin da rede refez as duas VM e funcionou legal.

 

Fica a dica: testem, testem..e testem...

 

hehehe

 

Valeu pela ajuda moçada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.