87 lines
2.7 KiB
PHP
87 lines
2.7 KiB
PHP
<?php
|
|
/** \file scripts/other/tasks/cleaner.php
|
|
* \brief DI webinterface task manager script, database cleaner
|
|
* \author Rob Schalken, Core|Vision
|
|
* \version $Revision: 1.6 $
|
|
* \date $Date: 2014/01/21 11:13:10 $
|
|
*
|
|
* Database cleaner
|
|
*/
|
|
|
|
/************************************/
|
|
/* Database cleaner */
|
|
/************************************/
|
|
|
|
// Acquire mutex
|
|
if (db_mutex_acquire(RemoveExtension(basename(__FILE__)) . "_" . $params['task_id'], 0)) {
|
|
// Constants
|
|
define('CLEANER_MAX_RUNTIME', (10 * 60));
|
|
|
|
// Initial values
|
|
$start = microtime(TRUE);
|
|
if( isset($params['param']['age']) ) {
|
|
// when 'age' is set, then the other parameters are assumed to be present
|
|
$db = $params['param']['db'];
|
|
$age = $params['param']['age'];
|
|
$entries = $params['param']['max_entries'];
|
|
}
|
|
else {
|
|
// parameters not set; use defaults
|
|
$db = "default";
|
|
$age = "7 days ago";
|
|
$entries = 10000;
|
|
}
|
|
|
|
// Remove entries before this date:
|
|
$delete_older = strtotime($age);
|
|
|
|
// Define tables
|
|
$tables = array("log_realtime", "log_zkl", "log_gebruiker", "log_tcp", "log_secure");
|
|
for($i=0; $i<sizeof($tables); $i++) {
|
|
// Clear total amount
|
|
$total_deleted_items[$i] = 0;
|
|
}
|
|
$last_date = array();
|
|
|
|
DBG("cleaner " . $params['task_id'] . ": from " . $db . ", date before " . iso8601($delete_older) . ", " . $age);
|
|
|
|
do {
|
|
$total_this_round = 0;
|
|
|
|
for($i=0; $i<sizeof($tables); $i++) {
|
|
// Delete entries in batches
|
|
$deleted_items[$i] = db_delete_archive($tables[$i], $db, $delete_older, $entries, $last_date[$i]);
|
|
|
|
// Total amount of deleted items
|
|
$total_deleted_items[$i] += $deleted_items[$i];
|
|
$total_this_round += $deleted_items[$i];
|
|
}
|
|
} while(((microtime(TRUE) - $start) < CLEANER_MAX_RUNTIME) && ($total_this_round != 0));
|
|
|
|
// End time
|
|
$end = microtime(TRUE) - $start;
|
|
|
|
// Show results
|
|
// Clear overall total counter
|
|
$total = 0;
|
|
|
|
for($i=0; $i<sizeof($tables); $i++) {
|
|
DBG("cleaner " . $params['task_id'] . ": " . sprintf("%-15s", $tables[$i] . ":") . " " . sprintf("%7u", $total_deleted_items[$i]) . " entries deleted" . ($last_date[$i] ? (", last entry: " . iso8601($last_date[$i])) : ""));
|
|
|
|
// Add subtotal to overall total
|
|
$total += $total_deleted_items[$i];
|
|
}
|
|
DBG("cleaner " . $params['task_id'] . ": " . sprintf("%-15s", "total:") . " " . sprintf("%7u", $total) . " entries deleted, " . ($total ? (sprintf("%.0F", $total/$end) . " entries/s, ") : "") . sprintf("%.3F", $end) . " s");
|
|
|
|
// Release mutex
|
|
db_mutex_release(RemoveExtension(basename(__FILE__)) . "_" . $params['task_id']);
|
|
|
|
// Set handled flag
|
|
$handled = 1;
|
|
}
|
|
else {
|
|
// Debug info
|
|
DBG("Mutex not released: " . $params['task_id']);
|
|
}
|
|
|
|
?>
|