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 daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
×

Informação importante

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