Cada vez que instanciamos un Zend_Db_Table, ZF hace un describe de la/las tablas que vamos a usar en nuestros query, recolectar esta info consume tiempo y recurso. ZF nos da la posibilidad de Cachear estos datos, usando Zend_Cache. Esto si bien podria estar como default, para reducir bastante los tiempos, no lo esta debido a que si cambiamos el nombre o datos de nuestra tabla, deberiamos limpiar el cache, y para evitar problemas que pueda llegar a generar esto no viene activo por default.
Si queremos hacerlo en nuestro sistema usando Sqllite la forma es muy simple. Basta habilitar sqllite en nuestro php.ini y crear una carpeta para que guarde este cache, podemos elegir la misma ruta que usamos para guardar nuestras paginas con Zend_Cache, todo esto es totalmente personalizable.
El codigo para que guarde la metada lo tenemos que aplicar antes de instanciar cualquier modelo, esto lo podemos hacer desde el bootstrap, pero tambien hay otras formas, cada uno puede implementar la forma que mas le convenga.
Los datos a continuacion tenemos que guardarlos en nuestro archivo de configuracion, yo uso los .ini en el ejemplo
config.ini
[metadata_cache]
frontend.automatic_serialization = true
frontend.lifetime = 3600
; Lugar donde vamos a guardar el cache
backend.cache_db_complete_path= “/tmp/zend_cache_db”
Y este es el codigo que deberia ir en nuestro bootstrap
bootstrap.php
-
-
<?php
-
// … Configuracion inicial
-
-
// … Ahora configuramos el cache
-
$cache = Zend_Cache::factory( ‘Core’, ‘Sqlite’, metadata_cache->frontend, $config->metadata_cache->backend );
-
$cache->clean( Zend_Cache::CLEANING_MODE_ALL );
-
Zend_Db_Table_Abstract::setDefaultMetadataCache( $cache );
-
?>
-
Enlaces
Documentacion oficial de Zend_Db_Table
Documentacion de webinar sobre acceso a la base de datos con Zend Db






muy bueno! ahora no le estaria faltando un “$config->” a metadata_cache->frontend,????
pq sino hay algo q no entiendo
saludos excelente blog, espero puedas ampliarte mucho mas en zend framework
Gracias Emilio, me volvi loco con el plugin para darle forma al codigo, a veces me borra partes, como ahora!!