Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[MySQL] Saber la fecha de última actualización de una base de datos

Estas en el tema de [MySQL] Saber la fecha de última actualización de una base de datos en el foro de Bases de Datos General en Foros del Web. Hola foro. Una pregunta directa. ¿Es posible conocer a través de un script en PHP la fecha de la última actualización (inserción o modificación de ...
  #1 (permalink)  
Antiguo 15/06/2005, 02:55
 
Fecha de Ingreso: junio-2003
Ubicación: Petrel - Alicante
Mensajes: 14
Antigüedad: 20 años, 11 meses
Puntos: 1
[MySQL] Saber la fecha de última actualización de una base de datos

Hola foro.

Una pregunta directa.

¿Es posible conocer a través de un script en PHP la fecha de la última actualización (inserción o modificación de un registro, modificaciones en la estructura, borrados...) de una base de datos MySQL determinada? Si es así, ¿cómo se hace?

Un saludo.
  #2 (permalink)  
Antiguo 23/06/2005, 04:24
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Quizás lo más cercano a un método "directo" de obtener la información que quieres consiste en usar la sentencia SQL
Código:
SHOW TABLE STATUS
la cual devuelve una serie de registros con información sobre las tablas de una base de datos determinada, incluyendo la hora de creación, actualización y consulta de cada tabla.

De esta forma, para obtener la hora más reciente de actualización de una base de datos en general, podrías recorrer las horas de actualización de cada tabla, y llevar el registro del valor más reciente. Por ejemplo:

Código PHP:
<?php

require_once 'DB.php';  // Usando el modulo DB de PEAR


// Parametros para conectarse con la base de datos
define ('BD_HOST',        'localhost');
define ('BD_USUARIO',     'nombre_usuario');
define ('BD_CONTRASENYA''contrasenya');
define ('BD_NOMBRE',      'nombre_base_de_datos');


$dsn 'mysql://' BD_USUARIO ':' BD_CONTRASENYA '@' .
       
BD_HOST '/' BD_NOMBRE;

$db =& DB::connect ($dsn);

if (
PEAR::isError ($db)) {
    echo 
"No ha sido posible conectarse con la base de datos: " .
        
$db->getMessage ();
}

// Recibir los registros como una matriz asociativa
$db->setFetchMode (DB_FETCHMODE_ASSOC);

$filas $db->getAll ('SHOW TABLE STATUS');

if (
PEAR::isError ($filas)) {
    echo 
"No ha sido posible consultar el status de la BD: " .
        
$db->getMessage ();
}


// Encontrar la hora de actualizacion mas reciente
$mas_reciente 0;
foreach (
$filas as $fila) {
    
// El campo con la informacion relevante se llama 'Update_time'.
    // Las horas se devuelven en el formato "AAAA-MM-DD hh:mm:ss", asi que
    // es conveniente convertirlo en un valor numérico único
    // p.ej. con strtotime()
    
$hora_actualizacion strtotime ($fila['Update_time']);

    if (
$hora_actualizacion $mas_reciente)
        
$mas_reciente $hora_actualizacion;
}

// La hora esta en formato marca de tiempo de Unix.
// Convertirla a un formato mas legible es posible con la funcion date()
echo 'La ultima actualizacion se hizo en ' date ('r'$mas_reciente) . "\n";

?>
(nota que el segmento más importante del código es el ciclo foreach, el resto del código simplemente se encarga de ejecutar la sentencia SQL "SHOW TABLE STATUS", que puedes lograr usando la familia de funciones mysql_* de PHP, o cualquier otro método.)

De otra forma, es posible también crear campos tipo TIMESTAMP en cada tabla, y verificar con ellos la hora de actualización en cada tabla. En la documentación de MySQL puedes encontrar información sobre los campos TIMESTAMP y cómo operan.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:43.