Array
(
)

Fechando ou Reutilizando conexão com Mysql usando PDO - PHP

Cleyton Caetano
   - 29 fev 2016

Bom, meu script estava funcionando perfeitamente até eu colocar ele online, bastou alguns minutos de sossego e tranquilidade para o erro apareccer.
"parecia bom demais pra ser verdade".
O problema agora é o seguinte, toda vez que eu tento executar um código meu me retorna este erro.
#Código

SQLSTATE[42000] [1226] User 'u968736533_doshe' has exceeded the 'max_user_connections' resource (current value: 3)

Isso acontece porque toda vez que faço alguma coisa com meu banco de dados eu utilizo uma função que criei para se conectar ao banco de dados.
segue o código da função.
#Código
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, para utilizar a função eu faço da seguinte forma.
#Código
conexao()->prepare($sql);

Mas agora eu estou na dúvida de como encerrar essa conexão ou mesmo como reaproveitar a mesma uma vez aberta, para que não haja várias conexões abertas de uma vez.
Alguém com uma ideia para ajudar?

Din
|
MVP
Pontos: 45
    29 fev 2016

Bom pelo que estou vendo, você deve ter um CRUD, põe um evento destrutor na sua classe, e fecha a conexão com o banco de dados.

Cleyton Caetano
   - 29 fev 2016


Citação:
Bom pelo que estou vendo, você deve ter um CRUD, põe um evento destrutor na sua classe, e fecha a conexão com o banco de dados.

Ainda estou perdido sobre o que fazer com meu código! Todos os métodos de destruição que utilizei e pesquisei na internet não funcionaram!

William (devwilliam)
   - 29 fev 2016

Tenta implementar a conexão no padrão singleton http://www.devwilliam.com.br/php/pdo-conexao-seguindo-singleton-php.

Cleyton Caetano
   - 29 fev 2016


Citação:
Tenta implementar a conexão no padrão singleton http://www.devwilliam.com.br/php/pdo-conexao-seguindo-singleton-php.


Interessante seu código!

deixa eu entender, sua classe funcionaria com minhas funções normalmente? pelo que retorno a conexão PDO com a função conexao() para outras funções como InsertBD e UpdateBD, se eu fizer assim terei um resultado true no final das contas?

#Código

//usando seu código
$conexao = new Conexao ();

//usando na minha funcao
$conexao->prepare($sql);

William (devwilliam)
   - 29 fev 2016

#Código

 /* Require no script contendo a classe */  
 require_once 'conexao.php'; 
 
 /* Variável recebendo instância do objeto PDO */  
 $pdo = Conexao::getInstance();  

$pdo->prepare($sql);

Cleyton Caetano
   - 29 fev 2016


Citação:
#Código

 /* Require no script contendo a classe */  
 require_once 'conexao.php'; 
 
 /* Variável recebendo instância do objeto PDO */  
 $pdo = Conexao::getInstance();  

$pdo->prepare($sql);


Entendi, vou reescrever meu código e volto a postar aqui o resultado!