Tal vez un mejor enfoque consiste en los resultados de caché y se lee de la memoria caché, solamente golpear la base de datos cuando sea necesario ...
<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
$data = $this->Model->find('all');
if ($data) {
Cache::write($cacheKey, $data);
}
}
?>
El problema con esto es que asume la conexión de modelo y la base de datos están disponibles para el momento en que el caché no existe (o ha expirado), y si no fuera así, aún obtendría los mismos errores, pero la frecuencia ciertamente se reduciría.
Creo que para probar si la base de datos está disponible en absoluto requeriría algún truco de código personalizado, ya que el método básico de conexión de la torta asume el éxito y falla mucho cuando no está disponible. Probablemente haga un componente con métodos de conexión PHP estándar para controlar si debe intentar cargar un modelo.
<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
if ($this->DbTest->check('hostname','username','password')) {
$data = $this->Model->find('all');
if ($data) {
Cache::write($cacheKey, $data);
}
}
}
?>
<?php
// app/controllers/components/db_test.php
class DbTestComponent extends Object {
function check($hostname,$username,$password) {
$result = true;
$link = @mysql_connect($hostname,$username,$password);
if (!$link) {
$result = false;
}
@mysql_close($link);
return $result;
}
}
?>
Hmmm. ¿Tiene tales interrupciones masivas de la base de datos que esto es realmente necesario? ¿Por qué? –
feed database (stocks prices DB) Pekka – SMSM