Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/06/2019, 15:44
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Respuesta: Optimizar y reducir el número de conexiones a la base de datos

Ok, supongo entonces que ahora quedaría algo así como este ejemplo:

conexion.php

Código PHP:
Ver original
  1. // Nueva conexión singleton
  2. class Conexion {
  3.  
  4.     // Crea solo una instancia de la clase (patrón Singleton)
  5.     private static $_instance = false;
  6.  
  7.     public static function conectar() {
  8.  
  9.         // Verificar si no se ha realizado la conexión
  10.         if(self::$_instance === false) {
  11.             // Conectamos a la base de datos
  12.             try {
  13.                 // Verifico que los parámetros sea correctos.
  14.                 self::$_instance = new PDO("mysql:host=localhost;dbname=nombrebd",
  15.                         "root",
  16.                         "",
  17.                         array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  18.                               PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  19.                         );
  20.                
  21.                 //Intento ver en el código fuente las actuales conexiones a la BD.
  22.                 echo "Acabo de conectarme FW final";
  23.  
  24.             } catch (PDOException $e) {
  25.                 //Manejo de errores, esto solo es ejempl.o
  26.                 die('No se puede establecer una conexión a base de datos.');
  27.             }
  28.         }
  29.  
  30.         return self::$_instance;
  31.        
  32.     }
  33.  
  34. }

productos-modelo.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once "conexion.php";
  4.  
  5. class ModeloProductos{
  6.  
  7.     /*=============================================
  8.     MOSTRAR CATEGORÍAS
  9.     =============================================*/
  10.  
  11.     static public function mdlMostrarCategorias($tabla, $item, $valor){
  12.  
  13.         if($item != null){
  14.  
  15.             $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE $item = :$item");        
  16.  
  17.             $stmt -> bindParam(":".$item, $valor, PDO::PARAM_STR);
  18.  
  19.             $stmt -> execute();
  20.  
  21.             return $stmt -> fetch();
  22.  
  23.         }else{
  24.  
  25.             $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla");         
  26.  
  27.             $stmt -> execute();
  28.  
  29.             return $stmt -> fetchAll();        
  30.  
  31.         }
  32.        
  33.         $stmt -> close();
  34.  
  35.         $stmt = null;
  36.  
  37.     }
  38.  
  39. /*=============================================
  40. MOSTRAR SUB-CATEGORÍAS
  41. =============================================*/
  42.  
  43.     static public function mdlMostrarSubCategorias($tabla, $item, $valor){ 
  44.  
  45.         $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE $item = :$item");
  46.  
  47.         $stmt -> bindParam(":".$item, $valor, PDO::PARAM_STR);
  48.  
  49.         $stmt -> execute();
  50.  
  51.         return $stmt -> fetchAll();    
  52.  
  53.         $stmt -> close();
  54.  
  55.         $stmt = null;
  56.  
  57.     }

Ahora parece que va todo perfectamente e incluso que solo aparece en total una vez "Acabo de conectarme FW final" como aviso de conectado.

También me han sugerido otra opción que aun no he logrado adaptar bien a este método que sería con PDOStatement::closeCursorphp

¿Alguna otra sugerencia o mejora o ya con esto estaría todo arreglado?

Gracias de nuevo.

Saludos.