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ódigoSQLSTATE[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
   - 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!