Otimizando conexões entre PHP e MySQL

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

[ Hits: 19.974 ]

Blog: https://www.instagram.com/alexabolada/

 


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 alterar o título da janela de terminal via comando

Como capturar prints de vídeos usando mplayer

Guia de Certificação Linux

Convertendo imagem .BIN para .ISO com bchunk

Validando endereço de e-mail em PHP

Leitura recomendada

Compilando o PHP4 com acesso ao banco Interbase / Firebird no Conectiva 9

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

Ubuntu + Apache2 + MySQL + PHP5

Suporte PHP5 oci8 no Oracle 11g - Ubuntu 8.04 Server

PHP com suporte a PostgreSQL

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts