In den Statistiken der Websites finden sich immer mehr Details. Besonders interessant ist dabei die Größe der Datenbank. Doch wie kommt man an diese Information? Sie wird nicht auf dem Silbertablett präsentiert und es gibt auch keine in PHP integrierte Funktion, die sie einfach ausgibt. In diesem Artikel werden Sie lernen, wie man ohne viel Aufwand an sie rankommt.
Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform,
sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc
zu kontaktieren.
So weit so gut. Der nächste Teil erfordert einige genauere MySQL-Kenntnisse.
Wenn man nämlich den Befehl "SHOW TABLE STATUS FROM dbname" von
MySQL ausführen lässt (per Konsole oder Programmen wie etwa MySQL-Front)
bekommt man eine tabellarische Auswertung. Folgende Informationen werden für
jede einzelne Tabelle der Datenbank ausgegeben:
Name
Type
Row_format
Rows
Avg_row_length
Data_length
Max_data_length
Index_length
Data_free
Auto_increment
Create_time
Update_time
Check_time
Create_options
Comment
Wie man sieht brauchen wir für die Größe jeder Tabelle nur 2 Informationen
aus dem Query - nämlich "Data_length" und "Index_length".
Wie Sie jetzt vermutlich schon ahnen, kann man die Anfrage "SHOW TABLE STATUS
FROM dbname" auch einfach von PHP mittels "mysql_query()" ausführen
lassen. Dann müssen wir nur noch das Resultat per "mysql_fetch_array"
weiterverarbeiten. Dazu der Source-Code:
<?php
function db_size($name) {
// Anfrage definieren
$sql = "SHOW TABLE STATUS FROM " . $name;
// Anfragen und bei Misserfolg abbrechen
if($query = @mysql_query($sql)) {
// Ergebnis per mysql_fetch_array holen
while($result = @mysql_fetch_array($query)) {
// Ergebnis in ein Array einlesen
$tabledata[] = $result;
}
// Variabel initialisieren und Größe auf 0 setzen
$db_size = 0;
// Solange die Größe auffüllen, bis alle Tabellen durch sind
for($i=0; $i<count($tabledata); $i++) {
Kommentar: Das @ vor einem Funktionsaufruf bewirkt, dass keine Fehlermeldungen zurückgegeben werden.
Zum Abschluss noch eine kleine Funktion, die man immer und überall gebrauchen
kann. Der Rückgabe-Wert der "db_size()" Funktion ist die Größe
der Datenbank in Byte. Unpraktisch wir es hier bei einer Größe von
mehreren Megabyte. Deshalb noch die Funktion "format_size()":
Ne, hätt ich echt dabei schreiben müssen... Naja, jetzt ist es ja geklärt.
Ich empfele dir aber, wenn du dich mit PHP etwas intensiver beschäftigen willst, den Artikel "OOP in PHP" zu lesen.
yup, das wars, noobs wie ich brauchen halt jeden Befehl im Script ;) thx
----------------------------------------------------- Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel
--
http://pc-intern.com
http://straightvisions.com
Hmm... Hab es nochmal direkt nach einem Neustart ausprobiert ohne mysql_select_db() und es hat funktioniert. Der Quelltext stimmt auch - hab ihn 1 zu 1 kopiert und getestet. Auch verschiedene Datenbanken hab ich benutzt ohne diese zu selecten.
Vielleicht liegt es aber auch daran, dass es Funktionen sind. Um die Größe auf dem Bildschirm angezeigt zu bekommen muss man "echo format_size(db_size($name));" schreiben.
Kann sein... Ich hatte die Funktion zuerst drin stehen, hab mir aber dann gedacht, dass ich sie doch nicht brauchen werde, weil es bei mir auch immer ohne geklappt hat.
Klingt allerdings logisch - mein Fehler.
Bei mir wird nur eine leere Seite zurückgegeben. Habe deinen Coide 1 zu 1 übernommen und lediglich die MySQL-Zugangsdaten geändert.
----------------------------------------------------- Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel
--
http://pc-intern.com
http://straightvisions.com