vogelor
2008-12-14 e265dcb466a11353dc5ebe0818670da316a49721
server/cron_daily.php
@@ -126,18 +126,45 @@
}
#######################################################################################################
// Cleanup logs in database
// Cleanup logs in master database (only the "master-server")
#######################################################################################################
//* Keep 7 days in sys_log
$tstamp = time() - (60*60*24*7);
$sql = "DELETE FROM sys_log WHERE tstamp < $tstamp AND server_id != 0";
$app->db->query($sql);
//* Keep 7 days in sys_datalog
$tstamp = time() - (60*60*24*7);
$sql = "DELETE FROM sys_datalog WHERE tstamp < $tstamp AND server_id != 0";
$app->db->query($sql);
if ($app->dbmaster == $app->db) {
   /** 7 days */
   $tstamp = time() - (60*60*24*7);
   /*
    *  Keep 7 days in sys_log
    * (we can delete the old items, because if they are OK, they don't interrest anymore
    * if they are NOT ok, the server will try to process them in 1 minute and so the
    * error appears again after 1 minute. So it is no problem to delete the old one!
    */
   $sql = "DELETE FROM sys_log WHERE tstamp < $tstamp AND server_id != 0";
   $app->dbmaster->query($sql);
   /*
    * The sys_datalog is more difficult.
    * 1) We have to keet ALL entries with
    *    server_id=0, because they depend on ALL servers (even if they are not
    *    actually in the system (and will be insered in 3 days or so).
    * 2) We have to keey ALL entries which are not actually precessed by the
    *    server never mind how old they are!
    */
   /* First we need all servers and the last sys_datalog-id they processed */
   $sql = "SELECT server_id, updated FROM server ORDER BY server_id";
   $records = $app->dbmaster->queryAllRecords($sql);
   /* Then delete server by server */
   foreach($records as $server) {
      $sql = "DELETE FROM sys_datalog WHERE tstamp < " . $tstamp .
         " AND server_id != 0 " . // to be more secure!
         " AND server_id = " . intval($server['server_id']) .
         " AND datalog_id < " . intval($server['updated']);
//      echo $sql . "\n";
      $app->dbmaster->query($sql);
   }
}
die("finished.\n");
?>