Leandru 0 Denunciar post Postado Maio 7, 2009 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
~TiuTalk~ 7 Denunciar post Postado Maio 7, 2009 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
Marcio Leandro 0 Denunciar post Postado Maio 7, 2009 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
Leandru 0 Denunciar post Postado Maio 7, 2009 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
~TiuTalk~ 7 Denunciar post Postado Maio 7, 2009 Posta seu código aqui, só por desencargo de consciencia :P Compartilhar este post Link para o post Compartilhar em outros sites
Leandru 0 Denunciar post Postado Maio 7, 2009 <? 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
Henrique Barcelos 290 Denunciar post Postado Maio 7, 2009 Por desencargo de consciencia, troque o fetch_assoc por fetch_array e tente... Compartilhar este post Link para o post Compartilhar em outros sites
Leandru 0 Denunciar post Postado Maio 7, 2009 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
~TiuTalk~ 7 Denunciar post Postado Maio 7, 2009 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
Leandru 0 Denunciar post Postado Maio 7, 2009 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
Henrique Barcelos 290 Denunciar post Postado Maio 7, 2009 Já tentou sem a cláusula LIMIT??? Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Maio 7, 2009 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
Leandru 0 Denunciar post Postado Maio 7, 2009 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
hinom 5 Denunciar post Postado Maio 7, 2009 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
kobutiii 0 Denunciar post Postado Maio 7, 2009 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
Leandru 0 Denunciar post Postado Maio 7, 2009 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