Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/03/2005, 05:49
Avatar de tralara
tralara
 
Fecha de Ingreso: diciembre-2003
Mensajes: 230
Antigüedad: 20 años, 4 meses
Puntos: 0
Ok gracias josemi, ya lo tengo solucionado, el problema como comentabas era que no declaraba las variables globales dentro de las funciones.

Aunque tengo una duda, si esta tecnica se usa en principio para liberar al server de consultas repetidas a las bases de datos, procesos de scripts etc en paginas con trafico y asi guardar una version html de la pagina que se cargara mucho mas rapido sin tener que volver a hacer cada vez los mismos procesos, pero por otro lado eso es espacio de disco no? Y al final terminas teniendo una version entera en html de la web, lo cual va un poco en contrasentido con la idea de pagina dinamica, que precisamente gracias a la base de datos te permite tener una sola pagina donde se cargan todos los contenidos, no?

Mi base de datos ocupa unas 20Mb, "nada", pero si cada archivo html(cache) ocupa de media unas 100k y hay mas o menos 1000 paginas...

Imagino que ahora deberia montar un script que borrara aquellas caches "antiguas" de paginas menos frecuentadas pero y si todas las paginas son frecuentadas, entonces esos archivos html ocupan lo que ocupan y terminas teniendo tu pagina en vesion html!!

Por otro lado que pasa si en las paginas que cacheo estoy usando sesiones? entonces este sistema no funcionaria?

Sea como sea qui os dejo como queda:

cacheador.php
Código PHP:
<?php
$TIEMPO 
86400;
$dire "./html";
$id $_GET['articuloID'];
function 
cache_abrir() {
global 
$TIEMPO,$dire,$id;

if(
file_exists($dire.'/'.$id.'.html') &&
time()-filemtime($dire.'/'.$id.'.html')<$TIEMPO){
include(
$dire.'/'.$id.'.html');
exit();
}
ob_start();
}
function 
cache_guardar() {
global 
$html,$dire,$id;
ob_end_clean();
$file fopen($dire.'/'.$id.'.html','w') or die("Error al intentar crear fichero.");
fwrite($file,$html) or die ("Imposible escribir en el fichero");
fclose($file);
}
?>
pagina.php
Código PHP:
<?php require_once('conexion.php'); ?>
<?php
include('cacheador.php');
cache_abrir();
ob_start();
?>

/*Aqui meteis todo el contenido de la pagina que quereis cachear.php */

<?php
$html 
ob_get_contents();
ob_end_clean();
cache_guardar($html);
echo 
$html;
?>
Gracias y saludos

Última edición por tralara; 10/03/2005 a las 05:51