Buenas.
Estoy haciendo un proyecto bastante extenso donde sigo un modelo con PDO y MVC donde en algunas de las páginas que cargan superamos las 25 conexiones a la base de datos y por lo tanto da problemas de conexión con el servidor actual que tenemos ya que tiene fijado ese límite de conexiones y me gustaría saber si alguna posibilidad de reducir las consultas las conexiones actuales ya que sino tendremos que cambiar a un servidor dedicado.
Por ejemplo utilizando este módulo en concreto para categorías que cargan en el menú salen 5 conexiones.
cabezote.php
Código PHP:
<!--=====================================
CATEGORÍAS
======================================-->
<div class="col-xs-12 backColor" id="categorias">
<?php
$item = null;
$valor = null;
$categorias = ControladorProductos::ctrMostrarCategorias($item, $valor);
foreach ($categorias as $key => $value) {
echo '<div class="col-lg-2 col-md-3 col-sm-4 col-xs-12">
<h4>
<a href="'.$url.$value["ruta"].'" class="pixelCategorias">'.$value["categoria"].'</a>
</h4>
<hr>
<ul>';
$item = "id_categoria";
$valor = $value["id"];
$subcategorias = ControladorProductos::ctrMostrarSubCategorias($item, $valor);
foreach ($subcategorias as $key => $value) {
echo '<li><a href="'.$url.$value["ruta"].'" class="pixelSubCategorias">'.$value["subcategoria"].'</a></li>';
}
echo '</ul>
</div>';
}
?>
</div>
</div>
productos-controlador.php
Código PHP:
<?php
class ControladorProductos{
/*=============================================
MOSTRAR CATEGORÍAS
=============================================*/
static public function ctrMostrarCategorias($item, $valor){
$tabla = "categorias";
$respuesta = ModeloProductos::mdlMostrarCategorias($tabla, $item, $valor);
return $respuesta;
}
/*=============================================
MOSTRAR SUBCATEGORÍAS
=============================================*/
static public function ctrMostrarSubCategorias($item, $valor){
$tabla = "subcategorias";
$respuesta = ModeloProductos::mdlMostrarSubCategorias($tabla, $item, $valor);
return $respuesta;
}
?>
modelo-productos.php
Código PHP:
<?php
require_once "conexion.php";
class ModeloProductos{
/*=============================================
MOSTRAR CATEGORÍAS
=============================================*/
static public function mdlMostrarCategorias($tabla, $item, $valor){
if($item != null){
$stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE $item = :$item");
$stmt -> bindParam(":".$item, $valor, PDO::PARAM_STR);
$stmt -> execute();
return $stmt -> fetch();
}else{
$stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla");
$stmt -> execute();
return $stmt -> fetchAll();
}
$stmt -> close();
$stmt = null;
}
/*=============================================
MOSTRAR SUB-CATEGORÍAS
=============================================*/
static public function mdlMostrarSubCategorias($tabla, $item, $valor){
$stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE $item = :$item");
$stmt -> bindParam(":".$item, $valor, PDO::PARAM_STR);
$stmt -> execute();
return $stmt -> fetchAll();
$stmt -> close();
$stmt = null;
}
?>
¿Es posible reducir esta consulta de categorias en el cabezote.php para por ejemplo intentar tener 1 sola conexión o 2 máximo?
En general, ¿hay algún modo global de recudir todas estas conexiones o hacerlo de otra manera? Ya que como comento anteriormente al llevar esta parte a un proyecto mucho más extenso superamos las 25 y hasta 30 conexiones en algunas zonas de la web.
Saludos.