Improvement issue 0000319:

Add new item on page administration/maintenance.
This item allow to repair and optimize database

Functionality tested with MySQL 4.1.9.
Please to report problem with previous version of MySql

git-svn-id: http://piwigo.org/svn/trunk@1111 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rub 2006-03-28 21:05:12 +00:00
commit 39c2bfb3b1
7 changed files with 89 additions and 35 deletions

View file

@ -2092,4 +2092,57 @@ UPDATE
'id' => $inserted_id,
);
}
/**
* Do maintenance on all PWG tables
*
* @return nono
*/
function do_maintenance_all_tables()
{
global $prefixeTable;
$all_tables = array();
// List all tables
$query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\';';
$result = pwg_query($query);
while ($row = mysql_fetch_array($result))
{
array_push($all_tables, $row[0]);
}
// Repair all tables
$query = 'REPAIR TABLE '.implode(', ', $all_tables).';';
pwg_query($query);
// Re-Order all tables
foreach ($all_tables as $table_name)
{
$all_primary_key = array();
$query = 'DESC '.$table_name.';';
$result = pwg_query($query);
while ($row = mysql_fetch_array($result))
{
if ($row['Key'] == 'PRI')
{
array_push($all_primary_key, $row['Field']);
}
}
if (count($all_primary_key) != 0)
{
$query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';';
pwg_query($query);
}
}
// Optimize all tables
$query = 'OPTIMIZE TABLE '.implode(', ', $all_tables).';';
pwg_query($query);
}
?>