Bearbeitung großer Datenmengen aufteilen Hallo,
ich habe vor, über ein Formular eine XML-Datei auf den Server hochzuladen, dort mit PEAR::Serializer zu parsen und die Daten mit einer Datenbank abzugleichen bzw. einzutragen.
Nun kann ich aber nicht unbedingt garantieren, dass das Parsen und Verarbeiten innerhalb der maximalen Ausführungszeit des Scripts erfolgen kann.
Daher möchte ich gerne die hochgeladene Datei mit move_uploaded_file() in ein Temp-Verzeichnis zu verschieben, wo es aber nach Beendigung des Scripts noch erhalten bleibt.
Danach möchte ich ein anderes Script wiederholt aufrufen, wobei ich Dateiname und Startpunkt für die Bearbeitung übergebe (z.B. per URL-Parameter)
Wenn das Ende erreicht ist, soll die Datei wieder gelöscht werden.
Etwas Kopfzerbrechen bereitet mir dabei der Verbleib der Datei und das wiederholte Aufrufen des Scripts.
Was passiert, wenn während der Bearbeitung der Browser geschlossen wird?
Wie realisiere ich den wiederholten Aufruf am besten?
Mit Header() könnte ich einfach nach Verarbeitung des nächsten Häppchens zum nächsten Abschnitt weiterleiten.
Bei einer Warnung ist die Sache aber erledigt.
Diese Variante würde auch verhindern, dass ich eine Statusmeldung ausgebe.
Mit refresh im HTML-Header muss ich vor der eigentlichen Verarbeitung der Daten ja schon den HTML-Header und damit die Zeitspanne ausgeben. Und das kann dann entweder zu lang oder zu kurz sein. Problematisch ist höchstens der zu kurze Fall. Zu lang ist halt einfach Wartezeit für den Benutzer.
Was mich außerdem etwas stört ist, dass ich zunächst jedesmal die gesamte Datei parsen muss. Danach suche ich mir die nächsten zu verarbeitenden Daten aus.
Einerseits dauert das eine ganze Weile, andererseits benötigt das dann natürlich ne ganze Menge Speicher.
Kann ich mit dem PEAR::Serializer eine bestehende XML-Datei verändern?
Oder muss ich die Daten im Speicher löschen und eine neue Datei erstellen?
__________________ **********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
********************************** |