Seite 1 von 1

wo wird die datenbank-größe im acp abgerufen?

Verfasst: 26.01.2005 22:42
von rabbit
und wie kann ich alle db-tabellen dort mit einbeziehen, denn derzeit zeigt die statistik bei mir nur die gesamtgröße der standard-tabellen des phpBB an, ich habe aber noch 77 andere... :roll:
daher hätte ich gerne die stats aus allen tabellen, um einen realistischen wert zu bekommen und nicht ständig via phpMyAdmin nachgucken zu müssen.

TIA! :)

Verfasst: 27.01.2005 21:13
von saerdnaer
dürfte die admin/index.php sein

Verfasst: 27.01.2005 22:35
von rabbit
das dachte ich mir schon, was ich aber wissen möchte ist: wie stelle ich es an, dass wirklich alle tabellen dort in die statistik aufgenommen werden?
vermute mal, es ist dieser code in der admin/index.php, allerdings sehe ich dort keine explizite erwähnung, welche tabellen nun in die stats mit einfließen...

Code: Alles auswählen

	//
	// DB size ... MySQL only
	//
	// This code is heavily influenced by a similar routine
	// in phpMyAdmin 2.2.0
	//
	if( preg_match("/^mysql/", SQL_LAYER) )
	{
		$sql = "SELECT VERSION() AS mysql_version";
		if($result = $db->sql_query($sql))
		{
			$row = $db->sql_fetchrow($result);
			$version = $row['mysql_version'];

			if( preg_match("/^(3\.23|4\.)/", $version) )
			{
				$db_name = ( preg_match("/^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)/", $version) ) ? "`$dbname`" : $dbname;

				$sql = "SHOW TABLE STATUS 
					FROM " . $db_name;
				if($result = $db->sql_query($sql))
				{
					$tabledata_ary = $db->sql_fetchrowset($result);

					$dbsize = 0;
					for($i = 0; $i < count($tabledata_ary); $i++)
					{
						if( $tabledata_ary[$i]['Type'] != "MRG_MyISAM" )
						{
							if( $table_prefix != "" )
							{
								if( strstr($tabledata_ary[$i]['Name'], $table_prefix) )
								{
									$dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length'];
								}
							}
							else
							{
								$dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length'];
							}
						}
					}
				} // Else we couldn't get the table status.
			}
			else
			{
				$dbsize = $lang['Not_available'];
			}
		}
		else
		{
			$dbsize = $lang['Not_available'];
		}
	}
	else if( preg_match("/^mssql/", SQL_LAYER) )
	{
		$sql = "SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize 
			FROM sysfiles"; 
		if( $result = $db->sql_query($sql) )
		{
			$dbsize = ( $row = $db->sql_fetchrow($result) ) ? intval($row['dbsize']) : $lang['Not_available'];
		}
		else
		{
			$dbsize = $lang['Not_available'];
		}
	}
	else
	{
		$dbsize = $lang['Not_available'];
	}

	if ( is_integer($dbsize) )
	{
		if( $dbsize >= 1048576 )
		{
			$dbsize = sprintf("%.2f MB", ( $dbsize / 1048576 ));
		}
		else if( $dbsize >= 1024 )
		{
			$dbsize = sprintf("%.2f KB", ( $dbsize / 1024 ));
		}
		else
		{
			$dbsize = sprintf("%.2f Bytes", $dbsize);
		}
	}

Verfasst: 29.01.2005 09:26
von rabbit
*UP* :roll:

Verfasst: 29.01.2005 09:35
von kratzer54847
genau genommen hier:

Code: Alles auswählen

                     if( $table_prefix != "" ) 
                     { 
                        if( strstr($tabledata_ary[$i]['Name'], $table_prefix) ) 
                        { 
                           $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; 
                        } 
                     } 
                     else 
                     { 
                        $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length']; 
                     } 
das Problem liegt dann nämlich hier:

Code: Alles auswählen

$table_prefix != "" 
denn der Table Prefix wird ja ursprünglich in der config.php gesetzt

Verfasst: 29.01.2005 13:02
von rabbit
tja, das problem ist dann sicher der forum-AI (bot), der hat nämlich einen anderen prefix als die anderen tabellen und nimmt auch den größten platz der db ein aufgrund von ca. 100 installierten .aiml-files...
wie könnte man es anstellen, dass in den acp-stats auch diese tabellen angezeigt bzw. mit einbezogen werden?

Verfasst: 30.01.2005 17:05
von rabbit
*UP*

Verfasst: 31.01.2005 16:21
von rabbit
*UP*

Verfasst: 01.02.2005 16:39
von rabbit
*UP*

Verfasst: 02.02.2005 12:25
von Budman
Hallo!

Ist vielleicht ein sehr laienhafter Ansatz, aber könnte man nicht das table_prefix in der config.php um Dein zusätzlich verwendetes ergänzen?

Code: Alles auswählen

if( $table_prefix != "" )
                     {
                        if( strstr($tabledata_ary[$i]['Name'], $table_prefix) )  // hier wird doch geprüft...
                        {
                           $dbsize += $tabledata_ary[$i]['Data_length'] + $tabledata_ary[$i]['Index_length'];
                        }
                     } 
Aber ich denke, auf die Idee wirst Du auch schon gekommen sein... :(

Gruss Bud