FabianWesner
29.05.2007, 10:44:25
Hallo,
ich habe folgendes Problem zu lösen: Mein System soll große CSV-Dateien einlesen (1-bis 50 MB).
Mir ist wichtig, dass der Server dabei trotzdem ansprechbar bleibt und das Einlesen nicht vom Benutzer abgebrochen werden kann (z.B. durch Verlassen der Webseite)
Mit Java wäre das kein großes Problem:
Der Benutzer lädt seine Datei hoch und verlässt die Webseite
Ein Cronjob startet irgentwann ein Javaprogramm, welches -langsam- die CSV-Datei einliest und in die Datenbank speichert, ohne dabei den Server auszulasten
Nun möchte ich das mit PHP machen, also ohne virtual machine. Daher meine Fragen:
Ist es möglich ein PHP-Script auszuführen (z.B. per Cronjob), ohne das eine Webseite aufgerufen wird ?
Ist es möglich ein PHP-Script über einen längeren Zeitraum Daten in die Datenbank speichern zu lassen, ohne das ich die allgemeine 30-Sekunden Sperre aufheben muss?
Ist es möglich eine Datei stückchenweise einzulesen und zu speichern? Ich könnte alles mit fgetcsv() in ein Array packen und dieses danach in die Datenbank schreiben, aber dabei wird massiv Speicher belegt. Lieber würde ich das Stück für Stück machen.
Wie würdet ihr das Problem lösen?
Vielen Dank für eure Tipps und Kommentare!!!
ich habe folgendes Problem zu lösen: Mein System soll große CSV-Dateien einlesen (1-bis 50 MB).
Mir ist wichtig, dass der Server dabei trotzdem ansprechbar bleibt und das Einlesen nicht vom Benutzer abgebrochen werden kann (z.B. durch Verlassen der Webseite)
Mit Java wäre das kein großes Problem:
Der Benutzer lädt seine Datei hoch und verlässt die Webseite
Ein Cronjob startet irgentwann ein Javaprogramm, welches -langsam- die CSV-Datei einliest und in die Datenbank speichert, ohne dabei den Server auszulasten
Nun möchte ich das mit PHP machen, also ohne virtual machine. Daher meine Fragen:
Ist es möglich ein PHP-Script auszuführen (z.B. per Cronjob), ohne das eine Webseite aufgerufen wird ?
Ist es möglich ein PHP-Script über einen längeren Zeitraum Daten in die Datenbank speichern zu lassen, ohne das ich die allgemeine 30-Sekunden Sperre aufheben muss?
Ist es möglich eine Datei stückchenweise einzulesen und zu speichern? Ich könnte alles mit fgetcsv() in ein Array packen und dieses danach in die Datenbank schreiben, aber dabei wird massiv Speicher belegt. Lieber würde ich das Stück für Stück machen.
Wie würdet ihr das Problem lösen?
Vielen Dank für eure Tipps und Kommentare!!!