Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    Classe PDO, è meglio chiudere la connessione alla fine oppure si può non fare?

    Ciao a tutti,

    ho un dubbio:
    utilizzo una unica connessione per tutte le sentenze effettuate al DB mediante una classe, chiamando un metodo statico.
    É meglio chiudere la connessione alla fine della pagina?
    Come la chiudo con la classe PDO?
    ...con un NULL?


    Codice PHP:
    class Db implements IConnessione{
      
      private static 
    $connessione=NULL;
      private static 
    $risultato;

      private function 
    __construct(){}
      
      private function 
    __clone(){}
      
      static function 
    apri(){
        if(!
    self::$connessione){
          try{
            
    self::$connessione=new PDO("mysql:host=".self::HOST.";dbname=".self::DB.";charset=utf8",self::USER,self::PW);
            return 
    self::$connessione;
          }
          catch(
    Exception $e){echo "Errore nel DB \n".$e;}
        }else{
          return 
    self::$connessione;
        }
      } 


    se creo un metodo statico che lancio alla fine della pagina php, è sufficiente, oppure non è necessario effettuare la chiusura della connessione?


    Codice PHP:
      static function chiudi(){
        
    self::$connessione=NULL;
      } 

    Grazie,
    Roberto

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    La connessione viene chiusa in automatico quando l'oggetto PDO non è più referenziato oppure alla fine dello script.
    Se vuoi farlo manualmente è corretto impostare la variabile contenente l'oggetto PDO a NULL, ma alcune volte non basta.

    Se per esempio ci sono delle variabili che referenziano ancora l'istanza PDO questa rimane attiva fino al termine dello script, per forzarne la chiusura bisognerebbe impostare a NULL anche queste variabili. Oppure se hai un oggetto PDOStatement (magari restituito quando usi il metodo query()) dentro una variabile devi impostare anche questa a NULL, altrimenti la connessione rimane attiva.

    In generale però, se non hai volumi di query importanti te ne puoi anche fregare, anche se concordo con te, quando si può ottimizzare è sempre bene farlo, purché lo sforzo sia commisurato ai benefici.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    La connessione viene chiusa in automatico quando l'oggetto PDO non è più referenziato oppure alla fine dello script.
    Se vuoi farlo manualmente è corretto impostare la variabile contenente l'oggetto PDO a NULL, ma alcune volte non basta.

    Se per esempio ci sono delle variabili che referenziano ancora l'istanza PDO questa rimane attiva fino al termine dello script, per forzarne la chiusura bisognerebbe impostare a NULL anche queste variabili. Oppure se hai un oggetto PDOStatement (magari restituito quando usi il metodo query()) dentro una variabile devi impostare anche questa a NULL, altrimenti la connessione rimane attiva.

    In generale però, se non hai volumi di query importanti te ne puoi anche fregare, anche se concordo con te, quando si può ottimizzare è sempre bene farlo, purché lo sforzo sia commisurato ai benefici.
    Perfetto, grazie del chiarimento!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.