query plantillas para cake archivos cakephp

archivos - plantillas para cakephp



cakephp: ¿por qué algunos cambios NO suceden hasta que cambio la depuración a 3? (6)

Creo que es un problema del lado del cliente. ¿Tiene instalado el complemento Web Developer para Firefox Mozilla? En caso afirmativo, puede desactivar fácilmente la memoria caché en el lado del cliente solo para verificar.

Funciona de nuevo si cambia el nivel de depuración porque entonces los datos de las urls y las cookies son probablemente ligeramente diferentes, lo que lleva a una nueva recarga del servidor. Si todavía no funciona, entonces debe ser el caché del lado del servidor ...

NOTA: Además de esto, puede hacer todo tipo de cosas útiles para el desarrollo web con ese complemento, como modificar CSS al vuelo o visualizar estilos como superposición en la página.

En algún momento implementaré cambios localmente y funcionan bien, los copio en mi servidor web remoto y los cambios son ignorados. (El código es idéntico)

Voy a core.php, cambio la depuración a 3, reviso nuevamente ... ¡funciona!

Tengo la sensación de que tiene algo que ver con la memoria caché, pero no sé exactamente qué cambiar.


Definitivamente es el almacenamiento en caché. En el lado del servidor, si tiene habilitado el almacenamiento en caché, no se pregunte si ocurre el almacenamiento en caché. Puede desactivar esto en core.php, o más probablemente borrar el caché Cache::clear() cuando actualice su aplicación. En el lado del cliente, es posible que desee ajustar su navegador para desactivar completamente el almacenamiento en caché.


Tuve el mismo problema, y ​​deizel, dio una excelente explicación, solo quería agregar, si no hace muchos cambios, la manera fácil, sin eliminar o eliminar los datos de caché, o algo así, es cambiar la depuración nivel de 0 a 3, actualice la (s) página (s), haga cambios en el archivo po, y vuelva a establecer la depuración en 0.


Puede encontrar esto útil para borrar el caché en CakePHP 1.2, 1.3 y creo que esto funcionaría en 2.x (con una pequeña modificación para hacer uso de la nueva clase CakeRequest):

if(Configure::read(''debug'') > 0 and isset($this->params[''url''][''emptycache''])) { // clear Cache::write() items Cache::clear(); // clear core cache $cachePaths = array(''views'', ''persistent'', ''models''); foreach($cachePaths as $config) { clearCache(null, $config); } $this->Session->setFlash(''Cache cleared'', ''default'', array(), ''info''); }

Agregue esto a su AppController :: beforeFilter ().

Básicamente, mientras se encuentra en modo de desarrollo, el código anterior le permite borrar fácilmente su caché al agregar una cadena de consulta a la URL, por ejemplo, mydomain.com/?emptycache - eliminará todos los archivos de caché de Cake.


He encontrado una solución maravillosa aquí . Creo que debería ser perfecto y funciona bien. La solución como a continuación:

function _clear_cache() { Cache::clear(); clearCache(); $files = array(); $files = array_merge($files, glob(CACHE . ''*'')); // remove cached css $files = array_merge($files, glob(CACHE . ''css'' . DS . ''*'')); // remove cached css $files = array_merge($files, glob(CACHE . ''js'' . DS . ''*'')); // remove cached js $files = array_merge($files, glob(CACHE . ''models'' . DS . ''*'')); // remove cached models $files = array_merge($files, glob(CACHE . ''persistent'' . DS . ''*'')); // remove cached persistent foreach ($files as $f) { if (is_file($f)) { try { @unlink($f); } catch (Exception $ex) { $files[''errors''][] = $ex->getMessage(); } } } if (function_exists(''apc_clear_cache'')): apc_clear_cache(); apc_clear_cache(''user''); endif; return $files; }

Simplemente use la función anterior en su controlador de aplicaciones y ejecute esa función donde lo desee; borrará todo el caché.


CakePHP tiene un caché ubicado en /app/tmp/cache . La estructura del directorio se ve así:

# /app/tmp/cache # /app/tmp/cache/models # /app/tmp/cache/persistent # /app/tmp/cache/views

El problema principal generalmente experimentado es con el caché del modelo. Cuando la depuración está desactivada (es decir, en producción) y hace que CakePHP envíe, introspecta el esquema de todas las tablas de su base de datos y las almacena en archivos planos en la carpeta de models anterior. Si no elimina los archivos en esta carpeta, CakePHP comenzará a decir que los modelos / tablas / campos no existen cuando claramente lo hacen en su base de datos.

Si habilita el almacenamiento en caché de la vista en su aplicación, cuando se visualicen las vistas por primera vez, CakePHP compilará archivos planos en la carpeta de views para evitar tener que volver a representar estas vistas en la próxima solicitud.

Durante el proceso de arranque de CakePHP, debe determinar la estructura de directorios que está utilizando en su instalación antes de que pueda acceder a los archivos importantes (como database.php ). Como tal, CakePHP generará archivos de caché en el directorio persistent con las rutas absolutas a todos y cada uno de los directorios y archivos importantes, cualquier complemento que esté utilizando e incluso cualquier localización que haya creado para que pueda traducir rápidamente su aplicación entre idiomas sin reparar .pot archivos.

Por lo tanto, en pocas palabras, debe recordar eliminar todos los archivos en estos directorios cada vez que realice cambios de código en una aplicación que está en producción, o agregar esto como parte de su mecanismo de implementación . Sin embargo, no debe eliminar ninguno de los directorios.

El motivo por el cual se cambia la depuración a 3 funciona es que cuando se activa el modo de depuración (en cualquier valor mayor a cero) la memoria caché se borra y regenera en cada solicitud, pero, mientras esto funciona, no es fácil de automatizar.

Hay varias formas de hacerlo de forma programática, incluidos comandos de shell , complementos de CakePHP , configuraciones de Capistrano , archivos Ant, pero también se puede hacer de forma manual.