Foros del Web » Programando para Internet » PHP »

como hago un cache en php para una pagina sola?

Estas en el tema de como hago un cache en php para una pagina sola? en el foro de PHP en Foros del Web. hace dias que estoy buscando esto, tengo un php con muchos includes adentro que generan muchas consultas a la base de datos, yo no soy ...
  #1 (permalink)  
Antiguo 15/11/2007, 11:34
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
como hago un cache en php para una pagina sola?

hace dias que estoy buscando esto, tengo un php con muchos includes adentro que generan muchas consultas a la base de datos, yo no soy programador ni nada, asi que me las rebusque asi, el tema es que lo que genera solo quiero que se actualize cada 1 hora o 1 dia o lo que sea, no hace falta que sea en cada visita, lo que estoy buscando es un cache, que guarde todo lo que ese php genera en un html y solo mostrar el mismo html siempre durante 1 hora o x cantidad de tiempo, y luego si cambiar, pero no encuentro nada simple que solo guarde el html de un php y listo muestre eso, lo mas proximo que encontre es esto, http://www.tufuncion.com/cache-php pero se aplica a todo el sitio, no a un solo archivo como quiero, tambien encontre una clase ideal llamada gcache, pero no se por que en mi servidor no anda, alguien me puede recomendar algo bueno, miren esta clase
http://www.phpclasses.org/browse/package/3972.html

es perfecto lo que busco en mi localhost anda de 10, pero lo subo a mi servidor y no anda, mi php es este
http://www.publisierras.com.ar/phpinfo.php

me pueden ayudar?
  #2 (permalink)  
Antiguo 15/11/2007, 16:00
 
Fecha de Ingreso: noviembre-2007
Mensajes: 157
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: como hago un cache en php para una pagina sola?

Coloca este código al inicio del documento, muy importante. Antes que cualquier otro carácter.

Código PHP:
<?php
function crea_cache($contenido) {
    
$fichero = @fopen(__FILE__.md5($_SERVER['QUERY_STRING']),'w');
    if (!
$fichero or !@flock($fichero,2) or !@fwrite($fichero,$contenido))
        return 
'<!-- Error al crear la cache -->'.$contenido;
    
fclose($fichero);
    return 
$contenido;
}
function 
muestra_cache() {
    
$contenido = @file_get_contents(__FILE__.md5($_SERVER['QUERY_STRING']));
    if (!
$contenido) return;
    echo 
$contenido;
    die();
}
if (
time() - @filemtime(__FILE__.md5($_SERVER['QUERY_STRING'])) > 3600)
   
ob_start('crea_cache');
else
    
muestra_cache();
?>
Puedes incluirlo en más páginas si deseas. Lo renueva cada hora.

Última edición por Lanselot; 16/11/2007 a las 00:31 Razón: Mejorado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:23.