große DB auf Server hochladen->timeout Problem
Rol
- datenbank
0 Proyxie0 Rol
0 Klaus Mock0 lulu
Hi,
ich muß eine MySQL Tabelle mit ca. 1.200.000 Datensätzen von meinem PC auf einen Strato Server hochladen.
Dazu habe ich die Tabelle mit mysqldump als SQL-Statements ausgegeben, die Datei auf den Server hochgeladen und ein Perlscript geschrieben, welches die Daten Zeile für Zeile wieder in die MySQL-Tabelle schreibt.
Wenn ich das Script nun von einem Browser aus starte, kommt nach dem einlesen von ca. 4000 Tabellenzeilen ein timeout (hätte ich mir auch denken können .-( ).
Hat jemand 'ne Idee, wie ich eine derart große MySQL Tabelle sonst noch auf einen (Strato-) Server hochladen kann?
Gruß
Rol
P.S. An das zerstückeln der Datei habe ich natürlich auch schon genacht, wäre aber auch ein langwieriges Unterfangen.
Hi,
Wenn es eine Datei ist, dann geh doch mal auf "www.2ftp.de"
Da kannst du dich einloggen, und es wird alles automatisch beim hocladen zerstückelt und wieder zusammengesetzt.
Cu Proyxie
Hi Proyxie,
Wenn es eine Datei ist...
Da kannst du dich einloggen, und es wird alles automatisch beim Hochladen zerstückelt und wieder zusammengesetzt.
Das nütz mir leider nichts. Das Problem ist nicht das Hochladen der Datei sondern das einlesen derselben in die MySQL-DB.
Das schaffe ich mit einem per Browser gestarteten Script nicht annähernd innerhalb des timeout.
Trotzdem Danke.
Rol
Hallo,
Wenn ich das Script nun von einem Browser aus starte, kommt nach dem einlesen von ca. 4000 Tabellenzeilen ein timeout (hätte ich mir auch denken können .-( ).
Normalerweise solltest Du solche Sachen nicht über den Webserver, sondern über eine Shell (telnet) erledigen. Wenn allerdings Dein Provider einen derartigen Zugang nihct erlaubt, so kannst DU auch versuchen, im Script regelmäßig (vielleicht alle 1000 Records) etwas an den Browser zu senden, damit der Webserver 'weiß' daß da noch etwas kommt.
Das mit dem Zerlegen halte ich übrigens auch nicht für die schlechteste Idee, da Du damit zumindest erreichst, daß die Servermaschine nicht komplett ausgebremst wird. Und mache solche sachen nicht in der 'Hauptverkehrszeit', Dein Provider wirds Dir danken.
Grüße
Klaus
Huhu Rol
für ein ähnliches Problem habe ich das ungefähr wie folgt gelöst
mit Hilfe von Javascript lädt sich das Skript nach einer bestimmten Zeitspanne (z.B. 30 Sec) selbst immer wieder neu.
(Ausgabe des Javascript codes in Browser mit flush(); erzwingen)
Es wird dann ein Parameter mit übergeben z.B. die zuletzt erfolgreich bearbeitete ID.
In etwa so
$THISSTART=time();
[...]
if((time()-$THISSTART )> 30){
$reload=$PHP_SELF.'?'.$QUERY_STRING.'&STARTID='.($n+1);
echo "<script>self.location='$reload'</script>reload...<br>";
flush(); # force output
}
Um den Server zu entlasten könntest Du ja noch eine Verzögerung im Javascript mit einbauen.
Viele Grüße
lulu