Otimizando conexões entre PHP e MySQL

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

[ Hits: 20.131 ]

Blog: https://fabio.automatizando.dev

 


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

Auto indentar linhas selecionadas no Vim

O comando lastlog

Fazer ModemManager ignorar ttyACM [Resolvido]

Como descobrir a versão (ou release) do seu Ubuntu Linux

Imprimindo repetidamente uma palavra ou frase na tela

Leitura recomendada

Paginação com ADODB

mysql_num_fields e mysql_field_name no PHP

PHP com suporte a PostgreSQL

Configurando o phpMyAdmin para acessar o MySQL remotamente

Mostrar os campos de uma tabela do PostgreSQL com PHP

  

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