Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2010, 05:00
Masane
 
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.