Foros del Web » Programando para Internet » PHP »

A ver quien sabe decirme si esto es viable...

Estas en el tema de A ver quien sabe decirme si esto es viable... en el foro de PHP en Foros del Web. Wenas! como vamos... Resulta que estoy haciendo una historia de plantillas tipo Smarty y he conseguido una clase bastante jugosa hasta la fecha. El funcionamiento, ...
  #1 (permalink)  
Antiguo 16/04/2006, 16:16
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
A ver quien sabe decirme si esto es viable...

Wenas! como vamos...

Resulta que estoy haciendo una historia de plantillas tipo Smarty y he conseguido una clase bastante jugosa hasta la fecha.

El funcionamiento, para quien no conozca Smarty, es sencillo:
- Por una parte tengo una carpeta con una serie de plantillas .php en las cuales diseño el formato que tendra cada pagina final. Estas plantillas contienen códigos especiales que luego se sustituiran por otro codigo dinamico.
- Y por otra parte tengo por cada plantilla, su correspondiente .php de ejecucion, que es el encargado de generar la parte dinamica de la pagina final. Este fichero es el encargado de sustituir los códigos especiales de las plantillas anteriormente comentadas.

Una vez realizado todo el proceso, este fichero "ejecutor" compila la plantilla y la muestra en pantalla con el consiguiente resultado final deseado.

Lo que os quiero preguntar es si creeis que este proceso es viable en cuanto a consumo de recursos del servidor, ya que la plantilla compilada se escribe en disco fisico cuando se solicita por url el fichero "ejecutor" (entiendase el uso de las funciones fopen, fwrite, etc...).
Yo he estado probando con varios proyectos y hasta la fecha no he notado un consumo exagerado... ¿Cual es vuestra opinión?

Gracias.
Espeto haberme explicado bien.

Saludos ozonicos.
  #2 (permalink)  
Antiguo 16/04/2006, 20:12
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 6 meses
Puntos: 32
Yo uso Smarty y Pear desde hace unos años en proyectos grandes sin problemas.

> Lo que os quiero preguntar es si creeis que este proceso es viable en cuanto a
> consumo de recursos del servidor, ya que la plantilla compilada se escribe en
> disco fisico cuando se solicita por url el fichero "ejecutor" (entiendase el uso
> de las funciones fopen, fwrite, etc...).

El tema es que siempre estás obligado a acceder a disco para leer el Smarty "compilado", el tema es que no lo vuelve a generar cada vez que lo necesitas, solo cuando cambia (o sea, te evitas en las posteriores llamadas que se vuelva a escribir el template).

En sí nunca me puse a investigar más de lo que dice la documentación y no tengo más información de como es el procedimiento interno.

Mi experiencia es que en proyectos grandes a mejorado notablemente el rendimiento con el uso de Smarty y el único problema que me ha sucedido fue cuando habilitábamos la opción de "caché" en muchos casos hacía que no se restaurara las páginas hasta que no se forzara desde el navegador.

Y alguna vez tuvimos problemas cuando varios desarrolladores modificaban los fuentes cuando los usuarios usaban el sitio, generando que vieran la versión "compilada" a pesar que los fuentes hubieran cambiado. Esto nos obligó a generar un proceso que borrara los temporales con los archivos "compilados" para asegurarnos que no hubiera problemas.

Y la opción "caché" la dejamos deshabilitada siempre (aunque no notamos su ausencia).

Por el resto, sin problemas.

> Yo he estado probando con varios proyectos y hasta la fecha no he notado
> un consumo exagerado... ¿Cual es vuestra opinión?

También escribo sobre Smarty en: http://templatesmarty.blogspot.com, pero donde estoy más activo es en http://phpcinco.blogspot.com.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 17/04/2006, 02:19
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
gracias por tu extensa respuesta... tambien lo veo asi y queria comparar opiniones. La inquietud que tengo es que por ejemplo, si estas sacando un listado de noticias de la base de datos, ¿como comparas si el listado de noticias que te traes genera una plantilla igual a la que ya existia? Para ello habria que leer el fichero compilado, comparar el contenido con el nuevo contenido generado y si es distinto reescribir el fichero no? Esto genera 2 accesos al fichero en vez de 1 que seria el de escribirlo si o si... No sería peor el remedio que la enfermedad? jeje

El tema del cache creo que entiendo por donde va... hasta la fecha no me ha pasado, pero estare atento gracias.
  #4 (permalink)  
Antiguo 17/04/2006, 12:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por OzonoBCN
gracias por tu extensa respuesta... tambien lo veo asi y queria comparar opiniones. La inquietud que tengo es que por ejemplo, si estas sacando un listado de noticias de la base de datos, ¿como comparas si el listado de noticias que te traes genera una plantilla igual a la que ya existia? Para ello habria que leer el fichero compilado, comparar el contenido con el nuevo contenido generado y si es distinto reescribir el fichero no? Esto genera 2 accesos al fichero en vez de 1 que seria el de escribirlo si o si... No sería peor el remedio que la enfermedad? jeje

El tema del cache creo que entiendo por donde va... hasta la fecha no me ha pasado, pero estare atento gracias.
En principio el tema del "caché" se controla por tiempos de expiración .. no se compara "contenido" sino cuando se creó la página que vuelves a pedir y que tanto tiempo definistes como "ha de entregarse lo que tengas en el caché".

Lo que tal vez andas buscando es un "caché" pero de consultas .. eso en principio muchos RDBMS lo hacen .. Msyql por ejemplo: si pides un mismo "query" que ya se generó .. te lo devuelve del caché el resultado. Y por otro lado lo implemente o no tu motor de BBDD podrías crear tu própio control de caché de "query's" a base de almacenarte por algún lado las consultas que vas haciendo y sus resultados (en un XML? por ejemplo? u otro tipo de "buffer" para el resultado) ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/04/2006, 05:12
Avatar de OzonoBCN  
Fecha de Ingreso: diciembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
interesante cluster... entonces mysql ya genera consultas "cacheadas"? perfecto entonces... de todas formas me estoy mirando el tema de cache hacia archivo externo pq es interesante. Pondre todo lo que vaya encontrando por si a alguien mas le interesa ;)
  #6 (permalink)  
Antiguo 19/04/2006, 06:09
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 12 años, 6 meses
Puntos: 32
La "comparación", o sea, el funcionamiento en sí de las plantillas, es responsabilidad de Smarty. Tu no tienes que hacer nada "extra".

Puedes habilitar o deshabilitar el caché propio de Smarty, pero como te comentaba, en mi caso nos dió problemas.

Pero ten en cuenta que para el tema de rendimiento hay que evaluar todo el recorrido que hace la aplicación: el servidor web, la base de datos, las consultas sql, la correctitud del código html, etc.

Testea tu sitio con herramientas de validación. Instala en Firefox la barra
webdeveloper y usa "Validate HTML" y "View Speed Report".

Por ejemplo, puedes usar en tus plantillas Smarty el tag {strip}, que disminuye notablemente el tamaño de tu código (ojo con el código javascripts).

También deberías medir los tiempos de la base de datos: no es lo mismo hacer una consulta con varios joins innecesarios, o traer en el select todos los campos ("select *") versus solo los campos que necesitas, etc.

Puedes agregar soporte a compresión de las páginas, como el módulo mod_gzip en Apache.

Para medir la "latencia" de tu aplicación tienes que sumar todos los tiempos de cada parte involucrada.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 19/04/2006, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por OzonoBCN
interesante cluster... entonces mysql ya genera consultas "cacheadas"? perfecto entonces... de todas formas me estoy mirando el tema de cache hacia archivo externo pq es interesante. Pondre todo lo que vaya encontrando por si a alguien mas le interesa ;)
Si, .. las genera y Mysql dispone de parámetros para optimizar ese tema concreto:

http://www.databasejournal.com/featu...le.php/3110171
http://dev.mysql.com/doc/refman/5.0/en/query-cache.html

(esto involucra que tengas acceso a la configuración de Mysql por supuesto para algunos ajustes finos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 08:48.