diff options
author | rub <rub@piwigo.org> | 2006-03-28 21:05:12 +0000 |
---|---|---|
committer | rub <rub@piwigo.org> | 2006-03-28 21:05:12 +0000 |
commit | 39c2bfb3b1b8ad36af101b5aac7ab5d47f4d8ecb (patch) | |
tree | 396017128a94430b7bfdc58a5ad9ee6d1cf2c240 /admin/include | |
parent | 3a6aac1e5755e00de5eb16ed066393a9a1c114c3 (diff) |
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
Diffstat (limited to '')
-rw-r--r-- | admin/include/functions.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php index 4dd2869ef..7168e79d9 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -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); + +} + + ?> |