Pular para o conteúdo

Otimizando conexões entre PHP e MySQL

Dica publicada em PHP / Banco de Dados
Fábio Berbert de Paula fabio
Hits: 20.758 Categoria: PHP Subcategoria: Banco de Dados
  • Indicar
  • Impressora
  • Denunciar

Otimizando conexões entre PHP e MySQL

Geralmente os programadores utilizam a função mysql_connect() para conectar seu script PHP à uma base de dados do MySQL. Para otimizar esta conexão, basta substituir a função por mysql_pconnect()1, que recebe os mesmos parâmetros, porém com duas diferenças sutis e eficazes:
  • ao abrir conexão com o MySQL, o PHP irá procurar por algum link persistente previamente aberto com o SGBD2, este link possuirá o mesmo host, usuário e senha. Se este for encontrado, será o escolhido pelo programa ao invés de tentar abrir nova conexão.
  • a conexão com o MySQL não será fechada ao término da execução do script, de forma que próximos usuários possam desfrutar da mesma.
Conexões persistentes são muito aconselháveis para websites ou intranets de alto tráfego.

Nota 1: funções para outros SGBD's também possuem suas similares para conexões persistentes. Consulte o guia de referência do PHP para maiores informações (www.php.net).

Nota 2: SGBD vem de Sistema de Gerenciamento de Banco de Dados, categoria de software onde se encaixam MySQL, PostGreSQL, Oracle, Infomix, MS SQL Server, etc.

Configurando um drive de CD-RW com interface IDE

Configurando o Exim como MX secundário

HTML - Lazy Loading

O comando recode

SQL: Combinando INSERT + SELECT para duplicação de registros

Geração automática de menu drop down com banco de dados em PHP

Mensagem de erro: "PHP Fatal error: Call to undefined function pg_connect()" [Resolvido]

Configurando o phpMyAdmin para acessar o MySQL remotamente

mysql_num_fields e mysql_field_name no PHP

Paginação com ADODB

#1 Comentário enviado por GrupoFimdeprova em 09/08/2004 - 10:24h
Isto é aconselhável para sites com média de 100 visitas diárias???
Não traria prejuízos de desempenho ao server???
#2 Comentário enviado por fabio em 11/08/2004 - 13:47h
Olá,

Não traria problema algum, pode mandar bala!
#3 Comentário enviado por alphainfo em 09/11/2004 - 23:16h
Ow Fábio,

será q essa função tem em todas as versões do PHP ou não?
#4 Comentário enviado por fabio em 10/11/2004 - 10:01h
Olá Daniel, tem sim. Ela vem desde o PHP 3 se não me engano.

[]'s,
Fábio
#5 Comentário enviado por Ragen em 05/04/2005 - 19:25h
Olá Fabio,

Quando por acaso a conexão seria finalizado usando esse metodo perssistente? Somente se fosse ordenado um *connection close*?
#6 Comentário enviado por fabio em 05/04/2005 - 21:34h
Olá Ragen,

Retirado de:
http://br2.php.net/manual/pt_BR/function.mysql-pconnect.php

mysql_pconnect() age muito parecido com mysql_connect() com duas maiores diferenças.

Primeira,ao conectar, a função primeiro irá tentar encontrar um conexão persistente que já esteja aberta com o mesmo servidor, nome de usuário e senha. Se uma é encontrada, um identificador para ela será retornada ao invés de abrir uma nova conexão.

Segundo, a conexão com o servidor SQL não será fechada quando termina a execução do script. Ao invés, a conexão continuará aberta para uso futuro (mysql_close() não irá fechar conexões abertas por mysql_pconnect()).

Mais sobre conexões persistentes:
http://br2.php.net/manual/pt_BR/features.persistent-connections.php

[]'s
#7 Comentário enviado por pauloshiga em 16/07/2006 - 08:51h
Meu antigo host tinha o limite ridículo de 20 no "max_user_connections". Se atingisse 21 conexões no MySQL, dava erro e o site ficava fora do ar. Quem assina alguma hospedagem e tem esse limite, o jeito é usar mysql_connect() mesmo...
#8 Comentário enviado por neovictor em 06/08/2007 - 16:06h
^^ É sim...

Infelizmente o pconnect só dá mais problemas do que "otimiza".
Se vc tiver uma hospedagem só sua que possa configurar à vontade as opções, talvez melhore a performance, mas esse detalhe de não fechar a conexão irá atrapalhar outras conexões de outros visitantes, dando erro na página, o que vai ser uma grande dor de cabeça.

O pconnect na verdade diminui o número de usuários possíveis usando, diminui a carga máxima do sistema. :(


#9 Comentário enviado por dit0 em 18/12/2007 - 19:42h
Essa função serve tambem para scripts em php rodando diretamente no linux?

Contribuir com comentário

Entre na sua conta para comentar.