[Solucionado] G3W2 2.8.3 - Funciones del catalogo en cache

Hola todos!!
Cómo funcionan los acceso del catálogo que tiene el parámetro cache? Tienen algún tiempo de refresco?
Les trasmito lo que me dice el usuario:
"Los cambio que se realizan en Guaraní Gestión, como por ejemplo Creación de una comisión, NO se reflejan en forma inmediata en Guaraní 3w. Es decir, al crear una comisión, luego de confirmarla en Gestión… si se ingresa en forma inmediata a gestión, no se refleja en el perfil del alumno. Hay que cerrar sesión y espera un lapso de tiempo para poder ver los cambios nuevos. "

Nosotros sólo mostramos materias que tiene comisiones creadas y esta lista de materias en la operación inscripción a cursadas tiene el parámetro cache.

Gracias.
ANA - UNNOBA

Hola Ana, las funciones que se encuentran en el catálogo modelos/datos/db y en su definición tienen cache: memoria, se guardan en caché.
Es decir, se accede a la base de datos una sola vez y luego se guardan en memoria. La siguiente consulta, tomará los datos de la caché.

Si esta problemática es un caso circunstancial, pueden ejecutar el comando ‘limpiar_caché’
directorio_proyecto/bin$ ./guarani limpiar_cache

Ahora, si es para casos que ocurren permanentemente y afectan al uso del sistema, deberían considerar no guardar los datos en caché, modificando la definición de la función a cache:no y generar el catálogo. El tema es que esto bajará el rendimiento de la operación.

Te adjunto un posteo con un caso muy similar: http://foro.comunidad.siu.edu.ar/index.php?topic=8228.msg35186

Por lo que me decis, entiendo que la cache está en el servidor no en el cliente y no tiene tiempo de refresco.
Cuando el alumno en este caso vuelve a logearse, se vuelve a cachear el datos.
Es así o entiendo mal?
Gracias.
ANA - UNNOBA

Ana, hay dos tipos de caché:

Sesión:
Cuyo uso se define en la función del catálogo de la siguiente manera:


	/**
	 * parametros: ...
	 * cache: sesion
	 * ....
	 */
	function nombre_funcion($parametros)

Esta caché no tiene tiempo de expiración, dura lo que dura la sesión y se pierden los datos al desloguearse.
Se usa para funciones específicas de la sesión: por ejemplo, las noticias disponibles para el alumno, los datos básicos del alumno, los perfiles del alumno, etc.

Memoria:
Cuyo uso se define en la función del catálogo de la siguiente manera:

	/**
	 * cache: memoria
	 * cache_expiracion: 600
	 * filas: ....
	 */
	function nombre_funcion() 

El tiempo de expiración lo definís para cada función.
Este tipo de caché es general para todas las sesiones.
Se puede limpiar con el comando limpiar_cache

Clarísimo!!! Muchas gracias!!!
Una consulta más, el parámetro cache_expiracion: 600, 600 es el valor por default, para todas las funciones que no tengan este parámetro?

Si se omite el parámetro cache_expiracion, la memoria expirara en la cantidad de segundos definidos en la constante CACHE_EXPIRATION_MAX de la clase src/siu/modelo/datos/catalogo.php (por defecto 5 minutos), acá les dejo la documentación. Para limpiarla habrá que correr el comando limpiar_cache.
El valor cache_expiracion : 600, es un ejemplo, utilizado por muchas funciones de nuestro catálogo.

Va otra consulta: si quiero agregar el parámetro cache_expiracion a una función del catálogo, tengo que personalizar, no? Cómo deberìa hacerlo? Porque el método no cambia y quiero que siempre mantenga el que está en el catalogo original. Se entiende?

Ana, sí, deberás personalizar:

  1. Recrear la estructura del directorio, en el sector correspondiente a la personalización. (Por ejemplo, si querés personalizar la función lista_materias, que trae las materias para inscripción a cursadas, deberás recrear el directorio de esta manera: src/pers/nombre_pers/modelo/datos/db/inscripcion_cursada.php)

  2. En la personalización debe hacerse un extends en la clase original (siguiendo el ejemplo: class inscripcion_cursada extends \siu\modelo\datos\db\inscripcion_cursada)

  3. Personalizar la función correspondiente (en el archivo que se encuentra dentro del directorio de la personalización)
    Siguiendo el ejemplo:

	/**
	 * parametros: _ua, carrera, legajo, nro_inscripcion, plan, version, recursar
	 * cache: memoria
         * cache_expiracion: 600
	 * filas: n
	 */
	function lista_materias($parametros) 
	{ ..... }

Como no quieren personalizar la función en sí, sólo su definición, deberán copiar el código de la misma y sólo modificar lo referido a la caché.

  1. Generar catálogo: siempre que se modifica la definición de una función, debe generarse el catálogo, corriendo el comando.
    Ejemplo:
demo@g3w2-demo:~/proyectos/g3w2/bin$ ./guarani generar_catalogo

Acá te dejo un instructivo completo con detalles para personalizar funciones del modelo, deberías fijarte en el título Modificar una función ya existente en el modelo:
http://portalguarani.siu.edu.ar/Portal/wiki/NotasTecnicas/personalizaciones/modelo
Espero que te sea de utilidad.

Cualquier otra consulta, no dudes en avisarnos!

Juliana:
Hice lo siguiente, ya que no quiero sobre escribir el método:
class inscripcion_cursada extends \siu\modelo\datos\db\inscripcion_cursada
{

/**
 * parametros: _ua, carrera, legajo, nro_inscripcion, plan, version, recursar
 * cache: memoria
 * cache_expiracion: 600
 * filas: n
 */
function lista_materias($parametros) 
{
	return parent::lista_materias($parametros);
}

}
y funciona sin problemas.

ANA

Buenísimo, lo damos como resuelto.
Cualquier otra consulta quedamos a su disposición.
Saludos