Mário Miranda Postado Novembro 6, 2007 Denunciar Share Postado Novembro 6, 2007 Boa tarde.É possível fazer uma única conexão com um banco de dados e usar essa conexão em todos os scripts do site?Desde já agradeço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 itibere Postado Novembro 6, 2007 Denunciar Share Postado Novembro 6, 2007 (editado) sim, use mysql_pconnect();Do Manual PHPmysql_pconnect(PHP 3, PHP 4, PHP 5)mysql_pconnect -- Abre uma conexão persistente com um servidor MySQL Descriçãoresource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]] )Retorna um identificador de link persistente ao MySQL em caso de sucesso, ou FALSE se houver erro. mysql_pconnect() estabelece uma conexão com o servidor MySQL. Os seguintes padrões são assumidos para os parametros opcionais que estiverem faltando: server = 'localhost:3306', username = nome do usuário que for dono do processo do servidor e password = password vazio. O parametro client_flags pode ser uma combinação das constantes MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE ou MYSQL_CLIENT_INTERACTIVE. O parametro server pode também incluir um numero de porta. Ex: "hostname:port" ou um caminho para um socket ex: ":/path/to/socket" para o localhost. Nota: Suporte a ":port" foi adicionado em 3.0B4. Suporte a ":/path/to/socket" foi adicionado em 3.0.10. mysql_pconnect() aje 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()). O parametro opcional client_flags tornou-se disponivel no PHP 4.3.0. Este tipo de conexão é portanto chamada 'persistente'. Nota: Note que este tipo de conexão funciona somente se você esta usando o PHP como módulo. Veja a seção Persistent Database Connections para maiores informações. Atenção Usar conexões persistentes pode requerer alguns ajustes na sua configuração do Apache e MySQL para assegurar que você não ultrapasse o limite de conexões permitidos pelo MySQL.Outra parte do Manual:Atenção Existem mais alguns cuidados a se tomar quando usando conexões persistentes. Um deles é que, quando usando travamento de tabela em uma conexão persistente, se o script por qualquer razão não pode destravar a mesma, então scripts subsequentes usando a mesma conexão serão bloqueados indefinidamente e pode ser preciso reiniciar o servidor http ou o banco de dados. Outro cuidado a se ter é, quando usando transações, um bloco de transação também será carregado para o próximo script que usar a conexão se a execução do script terminar primeiro que o bloco de transação. Em ambos os casos, você pode usar register_shutdown_function() para registrar uma função simples de limpeza para destravar suas tabelas e fazer roll back de suas transação. O ideal é evitar o problema completamente não usando conexões persistentes em scripts que usam travamento de tabelas ou transações (você ainda pode usar elas nos outros casosPor isso é melhor fazer como o M@luco Belez@ falou. Editado Novembro 6, 2007 por itibere Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mário Miranda Postado Novembro 6, 2007 Autor Denunciar Share Postado Novembro 6, 2007 Mas Itibere, quando eu uso a conexão persistente, como eu faço para usa-la em outro script do site?Porque meu problema hoje é o seguinte: Eu tenho um servidor mysql...só que para abrir a conexão com ele é bem dificil...porque na hora de abrir demora muito...agora se eu conseguisse abrir a conexão e mante-la aberta para todos os outrs scripts já ajudaria pra caramba.Tem como eu fazer isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 itibere Postado Novembro 6, 2007 Denunciar Share Postado Novembro 6, 2007 Da mesma forma que você usa a não pesrsistente, a diferença que na não persiste quando o script termia a conexão é fechada, então toda vez que você executa um musql_connect() ele abre uma nova conexão. Com a conexçao persistente o fim do script não fecha a conexão, então da proxima vez que você usar o mysql_pconnect ele vai procurar por uma conexão se encontrar ele a usa e não abre outra. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mário Miranda Postado Novembro 6, 2007 Autor Denunciar Share Postado Novembro 6, 2007 Ah entendi agora.Então tá certo. Obrigado pela ajuda.até + Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 itibere Postado Novembro 6, 2007 Denunciar Share Postado Novembro 6, 2007 Lembre-se das restrições deste tipo de conexão. É prefierivel corrigir o problema de lentidão no seu servidor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mário Miranda
Boa tarde.
É possível fazer uma única conexão com um banco de dados e usar essa conexão em todos os scripts do site?
Desde já agradeço
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.