Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ozzyvegeta

mysql_pconnect() e mysql_connect()

Recommended Posts

bom..eu tava pesquisando no site do php e lá tinha algo sobre as funções mysql_pconnect() e mysql_connect()...qual das duas é melhor usar??eu lî q a mysql_pconnect() cria uma conexão fixa, mas se haver outras conexões com o mesmo nome de usuario ele não ira criar novas conexões, ira usar a mesma...já a função mysql_connect() fecha a conexão quando o script acaba, mais ela sempre cria um novo link mesmo q haja já um link com o mesmo nome de usuario...qual das duas é melhor usar??Se um usuario entra no brasil e outro entra nos EUA no meu site...o mysql vai abri quantas conexões usando a função mysql_connect()? e se eu tive usando a mysql_pconnect()?outra coisa... o mysql aceita quantas conexões por link? se é q isso existe...e qual a melhor forma de se fechar uma conexão via script? tipo, o melhor seria fechar quando o usuario fecha o browser, mas como eu sei q ele fecho? isso quando se usa a função mysql_pconnect..valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quantidade de conexões que o MySQL aguenta depende da configuração que foi feita e do equipamento que esta sendo utilizado para ser o servidor.

 

Quando uma conexão é inciada com mysql_pconnect(), esta não precisa ser fechada.

 

Para sanar suas dúvidas sobre conexões persistentes... leia:

http://www.php.net/manual/pt_BR/features.p...connections.php

 

Se ainda assim restarem dúvidas, volte a postar e discutiremos sobre um e outro tipo de conexão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá...eu ja li esse texto q tem no site do php...eu não intendi muito bem, ainda fiquei com duvidas em saber qual das duas é melhor usar..a função mysql_pconnect() ou mysql_connect()...tipo, eu to preçisando de um modo em q economize conexões com meu banco de dados, pois é um site q sera acessado por varios usuarios ao mesmo tempo...bom, mais pra ficar mais claro o meu intendimento eu gostaria de posta abaixo uq eu intendo sobre essas duas funções....ai você(s) me corrije conforme meus erros...tipo, se eu usar a função mysql_connect por td q eu intendi a cada pagina q eu criar eu tenho q fazer uma nova conexão com o banco de dados (fazendo o include a pagina connecta.php)...agora imagina se eu tiver mil paginas..e 1000 usuarios entram em meu site e acessam as mil paginas de meu site...eu terei 1000x1000=1000000 conexões abertas no meu mysql...bom, eu intendi isso...agora se eu usar a função mysql_connect pelo q intendi, a cada pagina q eu criar eu tenho q fazer uma nova conexão com o banco de dados (fazendo o include a pagina connecta.php), só q ao contrario da função mysql_connect() ela ira criar uma só conexão por usuario conectado pois ela vai verifica nos processos do BD se existe alguma conexão ativa com o mesmo host, user e pwd...caso tenha ela não cria, caso não tenha ela cria...bom, isso significa q se eu tiver mil usuarios conectados e cada um acessa minhas 1000 paginas eu terei entaum 1000 conexões...pois a cada verificação de host, user e pwd feita, sera encontrado uma conexão, e portanto não sera criada uma nova conexão...bom, eu fiz esse meu intendimento para q vcs me ajudem a comprender onde estão meus erros neste intendimento, assim fica mais facil me ajudar..muito obrigado a todos pela ajuda...valew....

Compartilhar este post


Link para o post
Compartilhar em outros sites

ozzyvegeta, nesse contexto que voce apresentou, de muitos usuarios conectados ao site, penso que eh melhor utilizar a função mysql_connect(); pois ao final da execução do script a conexão com o mysql é fechada... já com o mysql_pconnect(); nao acontece isso, a conexao eh persistente e se você tiver 1000 usuarios acessando a mesma pagina, voce tera 1000 conexao abertas ao mesmo tempo!!espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

e outra coisa importante nao eh so a funçao que você deve se preoculpar mas no modo como fazer as conexoes tbm eh importante

o banco de dados tem que ficar fechado o maximo de tempo possivel so abra quando for usar e fecha em seguida mesmo que se você fechar a janela a conexao fecha, procure fechar assim que usar

 

um modo muito errado que a maioria faz eh abrir a conexao no começo de uma pagina e nem fechar ela exemplo:

 

 

include "conecta.php"

 

...codigo....

 

 

?>

 

se você saber mecher com oop eh muito melhor da pra você fazer um sistema bem mais consistente e deixando as conexoes sempre livre

 

e use mysql_connect mesmo, a mysql_pconnect tem umas vantagens e umas desvantagens

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá... o ideal seria fazer uma animação explicando o funcionando de cada uma das conexões.

 

Vou tentar explicar separadamente. Isto serve para qualquer banco de dados que aceite conexões persistentes e não-persistentes, como: MySQL, Postgre, Firebird, Interbase, SQLServer, etc.

 

Conexões persistentes

(1) faz o reaproveitamento de conexões abertas;

(2) as conexões persistentes não precisam ser fechadas;

(3) usado para sites e sistemas com uma quantidade menor de conexões;

(4) não tem controle de transações, justamente por causa do item (1);

(5) Não funciona com o PHP em modo CGI;

 

 

Conexões normais

(1) há a necessidade de se preoculpar com o fechamento das conexões abertas;

(2) usado para sites com grandes quantidades de conexões, deve se preoculpar com a manupulação destar conexões, como comentado no item (1);

(3) faz controle de transações;

(4) maior uso de recursos de hardware;

 

Sobre o conteúdo do endereço mencionado, gostaria de chamar atenção para as seguintes passagens:

 

...

O segundo método, o mais popular, é rodar o PHP como um módulo em um servidor com multi-processos, que atualmente só inclue o Apache. Um servidor com multi-processos tipicamente tem um processo (pai) que coordena uma série de processos (filhos) que são os que realmente fazem o trabalho de servir as páginas. Quando uma requisição chega de um cliente, ela é entregue à um dos filhos que não estiver ocupado servindo outro cliente. Isso significa que quando o mesmo cliente faz uma segunda requisição ao servidor, ele pode ser servido por um processo filho diferente do da primeira vez. Quando abre-se uma conexão persistente, cada página que requisitar serviços de SQL pode reusar a mesma conexão estabelecida ao servidor SQL.

 

...

 

Se conexões persistentes não tem nenhuma funcionalidade a mais, para que elas servem?

 

A resposta é extremamente simples -- eficiência. Conexôes persistentes são boas se o sobrecarga (overhead) de criar uma conexão ao seu servidor SQL for alta. Saber se essa sobrecarga é alta depende de vários fatores. Como que tipo de banco de dados é, se está ou não na mesma máquina onde o servidor web está, o quão carregada de trabalho está a máquina hospedando o servidor SQL e assim por diante. O ponto é que se a sobrecarga de conexão for alta, conexões persistentes ajudam consideravelmente. Elas fazem com que os processos filhos simplesmente conectam-se uma vez só durante toda sua duração, ao invés de cada vez que eles processam uma página que requer uma conexão ao servidor SQL. Isso significa que cada filho que abriu uma conexão persistente terá sua própria conexão aberta ao servidor. Por exemplo, se você tiver 20 processos filhos diferentes que rodassem um script que fizesse uma conexão persistente à um servidor SQL, você teria 20 conexões diferentes ao banco, uma de cada filho.

Dando uma explicação para o último destaque, onde diz "se você tiver 20 processos filhos diferentes que rodassem um script que fizesse uma conexão persistente à um servidor SQL, você teria 20 conexões diferentes ao banco"... vou complementar a explicação.

Se o seu Apache, por exemplo, esta configurado como mencionado acima, então somente 20 processos serão criados e a mesma quantidade de conexões será criada com o servidor SQL, ou seja, 20 conexões, e serão reaproveitadas conforme a necessidade. Para o caso em questão, não serão criadas mais do que as 20 conexões com o banco.

 

No seu exemplo, para casos de muuuitas conexões, é interessante considerar o uso de um host dedicado.

 

O que eu estou querendo dizer é que, não existe melhor e pior, existe aquela que se adequa melhor ao seu projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.