Conexão com Mysql não encerra!

05/05/2016

Olá pessoal,

Para facilitar eu criei 3 funções.

- conexao
- InsertDB
- UpdateDB

a conexao faz uma conexão com o banco de dados, as outras pegam elas e fazer uma inserção ou um update no banco de dados, sendo que eu só fornece uma array assim.

$arrayName = array(
	'nome' 	=> 	$_POST['nome'],
	'username' 	=> 	$_POST['username'],
	);

InsertDB($arrayName,'user_admin')


minha função conexao está assim.

function conexao(){

	$var = array('host' => HOST,'usuario' => USER,'senha' => PASSWORD,'dbname' => BD,);

	$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
	
	try {
		@$con = new PDO("mysql:host=".$var['host'].";dbname=".$var['dbname'],$var['usuario'],$var['senha'], $opcoes);
		return $con;
	} catch(PDOException $e){
		echo $e->getMessage();
		die();
	}
	
}

Bom, tudo funciona perfeitamente, as funções InsertDB e UpdateDB sempre pegar a conexão que está na função conexao, ai que mora o problema, assim todas as vezes abre uma conexão nova e não consigo fechar ela, depois de algum tempo recebo a mensagem de erro dizendo que há várias conexões abertas, ai meu sistema todo para, e tenho que solicitar que reiniciem o servidor, alguém tem uma dica de como posso fechar essas conexões?

Cleyton Caetano

Respostas

05/05/2016

William (devwilliam)

Trabalhe com pattern singleton:
http://www.devwilliam.com.br/php/pdo-conexao-seguindo-singleton-php

Evite programar em PHP usando "@" para esconder erros!
Responder Citar

05/05/2016

Cleyton Caetano

Trabalhe com pattern singleton: http://www.devwilliam.com.br/php/pdo-conexao-seguindo-singleton-php Evite programar em PHP usando "@" para esconder erros!


Comecei a trabalhar nesse padrão e se encaixou perfeitamente ao meu sistema, obrigada William!
Responder Citar

05/05/2016

Marcio Araujo

Mas não demora muito para encerrar William?
Responder Citar

05/05/2016

William (devwilliam)

No PHP não tem problema Márcio.
Responder Citar

05/05/2016

Marcio Araujo

Ah ok, obrigado.
Responder Citar

05/05/2016

Marcio Araujo

Ah ok, obrigado.
Responder Citar