Ir para conteúdo

POWERED BY:

Arquivado

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

RogerTi

Encerrar conexao PDO no Mysql

Recommended Posts

Pessoal, quando se usa mysql_connect logo quando acaba precisa-se ou pelo menos eu uso usando mysql_close para encerrar a conexão, mas hoje em dia todos os meus sistemas são com PDO, e sempre que eu recebo ataques DDOS imprime o seguinte erro para mim SQLSTATE[HY000] [1040], at´´e entao pelo q vejo sobrecarrega o mysql, mas a pergunta e se precisa fechar conexao como no metodo dito.

 

E outra um pouco fora do assunto no MySQL server no arquivo my.ini tem a seguinte linha =>  max_connections=1000 esse 1000 e o numero de conexão ao mesmo tempo, eu posso colocar algum valor q seja infinito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você cria uma nova instancia da classe PDO, a conexão fica atrelada ao tempo de vida do seu objeto. Para fechar a conexão, é preciso destruir o objeto, garantindo que todas as referências restantes para ele sejam excluidas, para fazer isso, basta atribuir null à variável que contém o objeto. Se você não fizer isso explicitamente, o PHP irá fechar automaticamente a conexão quando o script terminar.

Nota : Se existem ainda outras referências a este objeto (um PDOStatement, ou de outras variáveis que referenciam ao mesmo objeto), estes devem ser removidos também (atribuindo  null para a variável que faz referência a PDOStatement).


Fonte: http://php.net/manual/pt_BR/pdo.connections.php


Sobre max_connections, isso depende do seu servidor, se você tiver memoria e processamento para aguentar, pode aumentar até 100000

Fonte: https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_connections

Compartilhar este post


Link para o post
Compartilhar em outros sites

caso eu comece um objeto

 

$objeto = new $objeto();

 

ele encerra sozinho quando acaba o codigo, o eu preciso fazer o

 

$objeto = null como você disse, fiquei meio na duvida.

 

sobre o max_connection

 

meu dedicado tem processador intel i7 4.7ghz 64Gb de RAM

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, RogerTi disse:

ele encerra sozinho quando acaba o codigo, o eu preciso fazer o

 


Quando o script terminar o PHP encerra automaticamente. Porem se apos as ões do banco, você não for fazer outras coisas que necessite do PDO, é uma boa pratica liberar os recursos que não serão mais usados. 

Encerrando a conexão 

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

$sth = $dbh->query('SELECT * FROM foo');

$sth = null;
$dbh = null;

/*
	[...]
*/


Sobre a configuração do seu servidor, sei que é possível estimar a demanda de IO, memoria e processamento, na minha vivencia, só conheci um DBA, que também era engenheiro, que sabia fazer esses lculos. No geral, "é no olho"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não deve levar em consideração o efeito atípico de um ataque DDoS para "considerar/compreender" que suas conexões não estão sendo fechadas.

 

Um ataque DDoS pode gerar milhares de conexões simultâneas, estourando o limite estipulado. Logo, é inviável mensurar a quantidade de conexões que foram realizadas ao mesmo tempo.

 

O que você pode realizar é a "antecipação" do fechamento da conexão. No mais, todas as conexões são fechadas quando o script termina.

 

Conexões persistentes, por outro lado, são "cacheadas" para serem reutilizadas quando um script tentar se conectar utilizando as mesmas credenciais.

 

http://php.net/manual/pt_BR/pdo.connections.php

http://stackoverflow.com/questions/18277233/pdo-closing-connection

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

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