Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/10/2015, 05:59
Avatar de Uncontroled_Duck
Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años
Puntos: 261
Respuesta: Pagina web muy lenta

Cita:
Iniciado por TrinityCore Ver Mensaje
1- ¿Esta bien lo que digo?, ¿te parece apropiado que ordene toda la web en carpetas (sectores) y cada cual con su correspondientes archivos css, images y js?
Esta respuesta es muy personal, he visto quien lo mete todo en un solo directorio y se mueve como pez en el agua, y otros que crean un directorio para cada documento. Si trabajas solo, como te sea más cómodo y fácil encontrar las cosas. Si prevés que en el futuro vas a compartir desarrollo... sería interesante pensar en algún orden mas o menos lógico para cualquier ser humano.

Yo acostumbro a separar lo común (que se utiliza en todas las vistas), de los módulos (todo aquello que tenga solo relación directa con alguna parte concreta de las vistas) evitando siempre que pueda la duplicidad.

Ejemplo:
El style.css es general y se utiliza por toda la web. va en la parte común, /css.
El auth.css es totalmente distinto y solo lo utiliza la parte de la web que se encarga de loguear y demás... va en un directorio a parte, /css/auth.

Cita:
Iniciado por TrinityCore Ver Mensaje
2- [B]Esta pregunta aunque te parezca rara o sin sentido biene al caso porque tengo una duda muy grande y creo que es hora de sacarmela..
[...]
Aqui mi duda es: si yo tengo estos dos archivos anclados o directamente escritos en una misma pagina, supongamos "index.php", ¿habria un problema de variables?
¿O el mysqli_close($conexion); evita este problema?
Parecido a lo anterior, ¿vas a duplicar el código?, y cuando toque modificar algo, ¿voy a buscar entre todos los archivo a ver donde he ido duplicando?

Reutilización...

PHP Te facilita las funciones o clases para eso.

Lo puedes tener en un documento independiente y reutilizarlo tantas veces como quieras.

Si necesitas modificar algo, o bien modificas una consulta concreta (solo una modificación) o bien modificas la función para los resultados (solo una modificación).

Puedes alterar el resultado y añadir componentes, por ejemplo la función prinResults podría estar obteniendo los datos directamente desde la base de datos. Cambiando la función desde donde le llegan los datos, e intercalando la función de cache, solucionas el tema consultas/cache sin modificar todos aquellos archivos que dependían de esta función.

Sobre el código que has escrito y evitar ese problema de repetir una posible solución sería así:
Código PHP:
<?php
require('config.php');
// Estas variables vienen de config.php
$conexion 'datos de conexion';
$db       'nombre de la db';

$keyCache1 'usuarios';
$query1    "SELECT * FROM usuarios";
$consulta1 printResults($keyCache1$query1$conexion$db);

$keyCache2 'mensajes';
$query2    "SELECT * FROM mensajes";
$consulta2 printResults($keyCache2$query2$conexion$db);

///////////////////////////////////////////    FUNCIONES DE TRABAJO    ////////////////////////////////////////////////////

/**
 * Imprime los resultados, vengan de cache o de la db
 *
 * @param null $keyCache
 * @param null $query
 * @param null $conexion
 * @param null $db
 */
function printResults($keyCache null$query null$conexion null$db null)
{
    
//$results = getQuery($query, $conexion, $db);
    
$results getCacheQuery($keyCache$query$conexion$db);

    foreach(
$results['fetch_array'] as $linea)
    {
        echo 
$linea['id'];
        echo 
$linea['usuario'];
        echo 
$linea['correo'];
    }
    echo 
'Total ' $results['num_rows'];
}

/**
 * Comprueba si la consulta ya está en cache, si no, la realiza y guarda la cache para la próxima.
 *
 * @param null $keyCache
 * @param null $query
 * @param null $conexion
 * @param null $db
 *
 * @return array
 */
function getCacheQuery($keyCache null$query null$conexion null$db null)
{
    
// pseudo código
    
if($cache->hash($keyCache))
    {
        return 
$cache->getItem($keyCache);
    }
    
$results getQuery($query$conexion$db);
    
$cache->setItem($keyCache$results);

    return 
$results;
}

/**
 * Realiza una consulta contra la DB
 *
 * @param null $query
 * @param null $conexion
 * @param null $db
 *
 * @return array
 */
function getQuery($query null$conexion null$db null)
{
    
mysqli_select_db($conexion$db) or die(mysqli_error($conexion));

    
$consulta mysqli_query($conexion$query) or die(mysqli_error($conexion));
    
$resultado mysqli_num_rows($consulta);
    
$linea     mysqli_fetch_array($consultaMYSQL_ASSOC);

    
mysqli_close($conexion);

    return array(
        
'num_rows'    => $resultado,
        
'fetch_array' => $linea,
    );
}
Solo es orientativo, lo he hecho de cabeza así que no se si funciona, pero más o menos puede darte ideas.

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight