Zum Inhalt springen

Datenbank optimieren leicht gemacht ???!!!!!

Erstellt am 22. November 2004 · 3 Antworten · letzte Antwort am 22. November 2004

Tags: PHP, Datenbank, Frage

FotoHorst ·

ich hab da folgenden halbwegs einfachen code aus alten projekten (ohne typo3), welcher die datenbankstruktur erkennt und sämtliche tabellen optimiert.

$tabellen = mysql_list_tables($database,$conn_id);
$num_table=mysql_num_rows($tabellen);
$tabellenstring='';
for($x=0;$x<$num_table-1;$x++)
{
  $tabellenstring=$tabellenstring.mysql_tablename($tabellen,$x).', ';
}
$tabellenstring=$tabellenstring.mysql_tablename($tabellen,$x);
mysql_query("OPTIMIZE TABLE ".$tabellenstring);

jetzt stehe ich vor dem Problem, die Variablen $database und $conn_id mit den Typo3-Variablen zu füllen. $database ist nicht so schwer, wenn ich die localconf.php auslese, aber die $conn_id krieg ich alleine nicht so schnell raus...

KANN jemand weiterhelfen ???

burna ·

ja die kannst du auch nicht herrausfinden.

$conn_id = mysql_connect(host,username,password);

also die id der verbindung zur db.
müsstest du zu dem script oben noch hinzufügen...

wie hast du das denn in deinen anderen projekten sonst gemacht?!

mfg,
burna

FotoHorst ·

sonst hab ich die verbindung ja selber aufgebaut ... aber typo3 nimmt einem ja diese schwere arbeit ab ;-)

inzwischen hab ich mich zumindest bis zum Objekt $GLOBALS['TYPO3_DB'] durchgeschlagen, wo die ID drinne zu stehen scheint.

print_r ($GLOBALS['TYPO3_DB']);

ergibt

t3lib_db Object ( [debugOutput] => [debug_lastBuiltQuery] => [link] => Resource id #18 )

Ich stell mich derzeit nur etwas blöde an, um da dran zu kommen... :-(

FotoHorst ·

EII KARAMMBA:::

erledigt...

und weil andere das evtl. auch benötigen könnten hier der komplette Code:

<?PHP
$arr = get_object_vars($GLOBALS['TYPO3_DB']);
while (list($prop, $val) = each($arr))
  if ($prop=='link') $conn_id = $val;

if (@is_file(PATH_typo3conf.'localconf.php')) {
  require(PATH_typo3conf.'localconf.php');
  $tabellen = mysql_list_tables($typo_db,$conn_id);
  $num_table=mysql_num_rows($tabellen);
  $tabellenstring='';
  for($x=0;$x<$num_table-1;$x++)
  {
    $tabellenstring=$tabellenstring.mysql_tablename($tabellen,$x).', ';
  }
  $tabellenstring=$tabellenstring.mysql_tablename($tabellen,$x);
  mysql_query("OPTIMIZE TABLE ".$tabellenstring."");

  $opt_ausgabe = 'Datenbank OPTIMIERT';
}
else $opt_ausgabe = 'Datenbank konnte nicht optimiert werden.';

echo $opt_ausgabe;
?>