MySql: Testdaten

FrankWST

Erfahrenes Mitglied
Hallo,

ich möchte Tests mit großen Datenmengen machen und wollte nach folgendem Schema Testdaten einspielen:
PHP:
$Data = array();
$Data[0]["Name"] = "Hans";
$Data[0]["Telefon"] = "12345";

$Data[1]["Name"] = "Knut";
$Data[1]["Telefon"] = "67890";
...usw.

while (list ($key, $value) = each ($Data)) {
  $query = sprintf('....usw.
Wenn ich nun aber wirklich Massen von Daten auf diese Weise einspielen will, geht das nicht. Es kommt die Fehlermeldung
Code:
Fatal error: Allowed memory size of XXX bytes exhausted...
Das liegt offensichtlich daran, dass die Datei einfach zu groß ist (ca. 1.000.000 Zeilen).

Nun meine Frage: Wie kann man das geschickter anstellen, hat jemand von Euch damit Erfahrungen gemacht?

Vielen Dank für Eure Hilfe im Vorraus,
Frank
 
Eine Idee wäre die riesige Datei in mehrere kleine zu unterteilen. Diese könnte man dann nacheinander per include() aufrufen. Allerdings hilft das auch nicht direkt, da der verbrauchte Speicher über alle Dateien "aufsummiert" wird.
D.h. man bräuchte eine Art "exclude()".
Gibt es eine Möglichkeit vorher geladene Dateien wieder aus dem Speicher zu entfernen?

Danke,
Frank
 
Zuletzt bearbeitet:
Hast du schonmal versucht verschachtelte schleifen zu benutzen, also nicht eine einzige.

also

1000x {
1000x{

Ich würde es mal versuchen. Ansonsten denke ich, dass du einen speziellen Algorithmus brauchst. Hab im Studium verschiedene für Sortierverfarhen kennen gelernt, aber nichts für einen solchen Fall^^

Gruß, Adnan

EDIT: Ich weiß grad nicht genau, wie es bei PHP war, aber ich glaub, man kann bei Arrays in verschiedenen Variablen Typen speichern. Vielleich kannst du noch was rausholen, wenn du Zahlen explizit in int speicherst, wobei ich das kaum glaube

EDIT2: Du kannst den Durchlauf unterbrechen und bei Knopfdruck auf einen Submit Knopf fortsetzen, wie wäre denn das
 
Zuletzt bearbeitet:
Die Servereinstellungen möchte ich nicht anfassen, da es das Problem ja auch nur verzögern würde.
Mittlerweile habe ich herausgefunden, dass ich mit der PHP-Funktion "header()" prinzipiell weiter komme. Diese wirkt nämlich wie ein "Neustart" der Seite.
 
Ich habe nun meine Testdaten auf zig einzelne Dateien verteilt, die über "header()" nacheinander aufgerufen werden.
Damit ist das Speicherproblem gelöst.

Nun kommt aber ein neues:
Nach 20 Dateien meldet der Browser (Mozilla Firefox):
Code:
Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
Offensichtlich ist er der Meinung, dass das nach 20 Umleitungen nichts mehr werden kann.
Wie kann man ihm das abgewöhnen? D.h. gibt es im Browser eine Einstellung "Ignoriere Endlosschleifen"?

Frank
 
Das ist ne gute Frage. Hör ich auch zum ersten Mal. Hab leider nichts gefunden, aber vielleicht kannst du mal in der Rubrik Sicherheit was machen. Da kann man diese mit verdächtige Datein wegmachen und so was.

Ech komisch.
 
Irgendwie scheints mir etwas komisch, dass du die ganzen Testdaten im php File haben willst.

Kannst du diese Testdaten nicht extern ablegen (z.b in einem testdaten.sql file) und dann das File verarbeiten?

Oder evt kannst du die Testdaten dynamisch erzeugen. Die TelNr zb als Zufallszahlen und Name als "Name$laufnr" etc.
 

Neue Beiträge

Zurück