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
parent 3a6aac1e57
commit 39c2bfb3b1
7 changed files with 89 additions and 35 deletions
+53
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);
}
?>
+17 -27
View File
@@ -41,7 +41,7 @@ check_status(ACCESS_ADMINISTRATOR);
// | actions |
// +-----------------------------------------------------------------------+
$action = isset($_GET['action']) ? $_GET['action'] : '';
$action = (isset($_GET['action']) and !is_adviser()) ? $_GET['action'] : '';
switch ($action)
{
@@ -84,6 +84,11 @@ DELETE
pwg_query($query);
break;
}
case 'database' :
{
do_maintenance_all_tables();
break;
}
default :
{
break;
@@ -98,32 +103,17 @@ $template->set_filenames(array('maintenance'=>'admin/maintenance.tpl'));
$start_url = PHPWG_ROOT_PATH.'admin.php?page=maintenance&action=';
if (!is_adviser())
{
$template->assign_vars(
array(
'U_MAINT_CATEGORIES' => $start_url.'categories',
'U_MAINT_IMAGES' => $start_url.'images',
'U_MAINT_HISTORY' => $start_url.'history',
'U_MAINT_SESSIONS' => $start_url.'sessions',
'U_MAINT_FEEDS' => $start_url.'feeds',
'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
)
);
}
else
{
$template->assign_vars(
array(
'U_MAINT_CATEGORIES' => $start_url,
'U_MAINT_IMAGES' => $start_url,
'U_MAINT_HISTORY' => $start_url,
'U_MAINT_SESSIONS' => $start_url,
'U_MAINT_FEEDS' => $start_url,
'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
)
);
}
$template->assign_vars(
array(
'U_MAINT_CATEGORIES' => $start_url.'categories',
'U_MAINT_IMAGES' => $start_url.'images',
'U_MAINT_HISTORY' => $start_url.'history',
'U_MAINT_SESSIONS' => $start_url.'sessions',
'U_MAINT_FEEDS' => $start_url.'feeds',
'U_MAINT_DATABASE' => $start_url.'database',
'U_HELP' => PHPWG_ROOT_PATH.'/popuphelp.php?page=maintenance',
)
);
// +-----------------------------------------------------------------------+
// | sending html code |