MySQL CRATE TABLE per PHP in einer Schleife

SolarStern

Mitglied
Hi,

um erstmal einiges klar zu stellen, warum ich das so mache wie ich es gleich schreibe, hier einige Erläuterungen:
Ich möchte Gästebücher für meine User in meiner Community machen. Da gibt es zwei Möglichkeiten. Entweder für jeden User ein eigenes Gästebuch, oder ein einziges Gästebuch wo das Gästebuch von jedem einzelnen gespeichert ist. Da meine Seite länger bestehen bleiben soll und somit die Gästebücher dementsprechend GOSS sein werden im Laufe der Zeit, denke ich mir, dass die Geschwindigkeit eines einzigen Gästebuchs dementsprechend langsam wird. Das Gästebuch vielleicht sogar irgendwann aufgibt. Momentan habe ich eine Userzahl von ca. 600. Und die Zahl steikt weiter. Deswegen entschied ich mich dafür, für jeden einzelnen User ein Gästebuch zu machen. Jetzt zu meinem Problem:

Mein Code


$sql="SELECT
username
FROM
login";

$result = mysql_query($sql) OR die("Fehler");

$name="";

while($row = mysql_fetch_assoc($result))
{
$name[]=$row['username'];
}

for($i=0; $i<count($name); $i++)
{
$sql="CREATE TABLE gaestebuch_".$name[$i]." (id INT AUTO_INCREMENT PRIMARY KEY, inhalt TEXT, datum DATETIME, wer TEXT)";

$result = mysql_query($sql) OR die("Fehler");

echo($name[$i]."<BR>");
}


Anfangs habe ich versucht gleich in der While-Schleife das Table zu erstellen. Doch da machte er mir grad mal den ersten Eintrag als Table. Danach gab er mir einen Resource-Fehler. Bei der For-Schleife hat er mir noch 5 Einträge erstellt.

Meine Vermutung ist, dass das PHP zu schnell ist und das MySQL dementsprechend aussetzt (Buffer Overflow). Also hier meine Frage: Was kann ich jetzt tun?

Please help me ^_^


CYA

Alexander
 
du solltest den Ansatz nochmal überdenken ;). MySQL kommt mit derartig winzigen Datenmengen locker zurecht, da du beim Auslesen eines Gästebuches ja nicht alle Datensätze der Tabelle auslesen würdest, sondern nur die des betreffenden Users.
Nun für jeden User eine Tabelle zu erstellen ist schlichtweg Unsinn!

Das Erstellen der Tabellen innerhalb der WHILE-Schleife ist wahrscheinlich fehlgeschlagen, da du bei beiden Anweisungen die gleichen Variablen benutzt ($result) und diese sich dann natürlich behaklen.
PHP ist immer nur so schnell, wie MySQL die Daten/ Bestätigung zurück liefert - sprich es wartet unter Umständen darauf, das der MySQL-Befehl umgesetzt wurde.

Bloddy
 
Schuldigung, dein Ansatz is Unsinn!


In dein Gästebuch machst du einfach eine Spalte mit dem Zusatz user_id oder sowas und so kannst du jedem deiner User die entsprechenden Einträge zuordnen.
Damit MySQL "langsamer" wird ... schwer zu sagen. Ab 500.000 Einträgen? Ich habs noch net getestet.

Aber diese Masse an Tabellen is sinnlos. ^^
Ronin
 
Yo,

vielen Dank für die schnelle Antwort. Also, wenn ihr beide meint, MySQL kommt locker damit zurecht, vielleicht sollt ich dann doch mal das ganze mit einer einzigen Tabelle probieren :) Ich werd ja sehen was passiert wenn ich die 500.000 überschreite ;)


Danke jedenfalls ^_^


CYA

Alexander
 
Zurück