Foros del Web » Programando para Internet » PHP »

Problema con cachear home

Estas en el tema de Problema con cachear home en el foro de PHP en Foros del Web. Buenas a todos. Hoy traigo un problemilla con una web a la que le tengo que "cachear" la home. Resulta que el index de esa ...
  #1 (permalink)  
Antiguo 21/01/2010, 05:00
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con cachear home

Buenas a todos.

Hoy traigo un problemilla con una web a la que le tengo que "cachear" la home.

Resulta que el index de esa web carga muchísimo el server, así que mi jefe me ha pedido que cree un script en php que desde el cron del server se ejecute una vez al día, y que pille la index dinámica (php) y genere un index.html con el resultado de la ejecución de los scripts de la index.php.

He estado viendo cómo se hace, y es usando el buffer de lectura (creo que es el de lectura ^^Uu), con las funciones ob_start() y demás, pero tengo un problema a la hora de guardar el archivo index.html.

Os paso el código:

Código PHP:
Ver original
  1. <?php
  2.   // Función para crear un index estático al día lanzado desde el cron del servidor.
  3.  
  4.   function cachear()
  5.   {
  6.     // Comenzamos a grabar el buffer
  7.     ob_start();
  8.    
  9.     // Ejecutamos el archivo a grabar
  10.     include("index.php");
  11.    
  12.     // Creamos/reescribimos el index estático
  13.     $fp = @fopen("index.html", 'w');
  14.  
  15.     // Recogemos el contenido grabado en el buffer
  16.     $buffer = ob_get_contents();
  17.    
  18.     // Reemplazamos los caracteres especiales
  19.     $buffer = str_ireplace("á", "&aacute;");
  20.     $buffer = str_ireplace("é", "&eacute;");
  21.     $buffer = str_ireplace("í", "&iacute;");
  22.     $buffer = str_ireplace("ó", "&oacute;");
  23.     $buffer = str_ireplace("ú", "&uacute;");
  24.     $buffer = str_ireplace("Á", "&Aacute;");
  25.     $buffer = str_ireplace("É", "&Eacute;");
  26.     $buffer = str_ireplace("Í", "&Iacute;");
  27.     $buffer = str_ireplace("Ó", "&Oacute;");
  28.     $buffer = str_ireplace("Ú", "&Uacute;");
  29.     $buffer = str_ireplace("ñ", "&ntilde;");
  30.     $buffer = str_ireplace("Ñ", "&Ntilde;");
  31.     $buffer = str_ireplace("¡", "&iexcl;");
  32.     $buffer = str_ireplace("¿", "&iquest;");
  33.     $buffer = str_ireplace("…", "...");
  34.     $buffer = str_ireplace("©", "&copy;");
  35.  
  36.     // Grabamos el buffer en el archivo
  37.     @fwrite($fp, $buffer);
  38.    
  39.     // Cerramos el proceso de escritura
  40.     @fclose($fp);
  41.    
  42.     // Limpiamos el buffer de lectura
  43.     ob_end_flush();    
  44.   }
  45.  
  46.   // Ejecutamos la función para cachear la home
  47.   cachear();
  48. ?>

No sé por qué no escribe el archivo, y hasta donde yo lo veo no hay ningún problema con el buffer de escritura :S, las funciones fopen() y fwrite() están correctas, ¿no? Vengo de php.net y no he encontrado fallo en el código :S...

¿Alguna idea de por qué no genera el archivo html?

Desde ya, muchas gracias por ayudarme.


Un saludo.
  #2 (permalink)  
Antiguo 21/01/2010, 05:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 2 meses
Puntos: 17
Respuesta: Problema con cachear home

Ummm, la verdad que no se si el código está bien o no, pero una vez me paso lo mismo, eran los permisos de la carpeta, resulta que estaba intentando crear un archivo en una carpeta en la que no tenía ningún tipo de privilegio.

Espero que te sirva de ayuda. Saludos!
  #3 (permalink)  
Antiguo 21/01/2010, 05:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema con cachear home

Probaré a consultar con la empresa de hosting a ver qué me cuentan.

Muchas gracias por orientarme.


Un saludo.
  #4 (permalink)  
Antiguo 21/01/2010, 07:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problema con cachear home

Bueno, a parte de que me faltaba meter una variable entre los paréntesis del str_ireplace, no sé por qué, aún con los permisos de escritura activados, si no creo previamente el archivo y le doy permisos 777 no me genera el archivo .hmtl, pero al menos ya por fin he conseguido que funcione.

Muchísimas gracias a todos por vuestra ayuda.


Un saludo.

Etiquetas: home
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 07:42.