Otimizando conexões entre PHP e MySQL

Publicado por Fábio Berbert de Paula em 08/01/2003

[ Hits: 18.492 ]

Blog: https://fabio.city

 


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.
Outras dicas deste autor

Como desabilitar o protocolo SSL3 no Nginx

O comando recode

Lançamento do TupiServer Linux 1.0

Apagando linhas em branco no vim

Criando sua própria distribuição Linux

Leitura recomendada

Como ver a saída de qualquer comando MySQL no PHP

Portal TechRoot

Mostrar as tabelas de um banco de dados no PostgreSQL usando PHP

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

Instalar Apache, PHP, MySQL e PostgreSQL no Ubuntu Linux 8.10

  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts