phpbar.de logo

Mailinglisten-Archive

AW: [php] TXT-File rausschreiben

AW: [php] TXT-File rausschreiben

Andreas Lange andreas.lange at haas-media.de
Don Okt 2 15:14:26 CEST 2003


Thomas schrieb:
> Es handelt sich hierbei um einen Datenexport, der entsprechend Zeit benötigt
> für das Zusammensuchen der Daten. Kann gut 5 - 10 Minuten dauern.

> Währendessen erscheint auf dem Browser eine 'Bitte Warten' Meldung. Ist die
> Datei erstellt, wechselt der Browser zu einer Download - Seite, denn im
> Hintergrund werden die erstellten TXT-Dateien in ein Zip gepackt und zum
> runterladen angeboten.

>> Eventuell reloaded der Browser die Seite automatisch
> Richtig

>> meta-refresh tag gesetzt?
> <meta http-equiv="Refresh" content="2; URL=http:// ...... ">

d.h. ja, nach 2 Sekunden ruft der Browser automatisch die angegebene
Seite auf. Existiert die Datei dann schon? Oder prüft die Folgeseite,
ob die Datei schon komplett erstellt ist, wenn nicht gibts wieder
einen Reload?

>> wird ein header('Location:'); gesendet vor dem Schreiben?
> bin ich mir nicht sicher, eher nein.

>> Wird session.auto_start verwendet?
> Es wird eine Session gestartet.

siehe unten

> - Wie wird in die Datei geschrieben? fopen('file','a+')?

> mit $handle = fopen($pfadDatenXml, "w");

um dem Problem auf den Grund zu gehen, häng mal an den Dateinamen
einen zufälligen String. und schau mal, ob die Dateilängen immer
gleich sind. Wenn ja -> Problem im Sourcecode, Wenn nein -> Problem
mit der Serverumgebung

> Interessanterweise funktioniert auf unserer Entwicklungsumgebung (Windows)
> alles, nur beim Kunden (Linux) bricht das File wie gesagt bei ca. 1MB ab und
> fängt zweimal von vorne an, bis er endgültig abbricht. Bei kleineren
> Datenmengen hatte bisher immer alles hervorragend funktioniert.

So ich hab da mal folgenden Tipp, bzw. wir haben es bei uns so
organisiert.

1. PHP Script wird gestartet
2. PHP Gibt eine Basisseite aus.
3. Die Datei wird generiert (bei uns z.B. PDF-File), währenddessen
wird mittels PHP ein Javascript-Befehl zum aktualisieren eines
Statusbalken ausgegeben.
4. Wenn die Datei durch ist, wird ein Javascript Befehl mit der neuen
Location ausgeführt. (Gewährleistet, das die Datei komplett erstellt
ist.
5. Wichtig war dabei, das trans_sid für die Seite zu deaktivieren, da
sonst PHP das Zeugs erst an den Apachen ausliefert, wenn die Seite
beendet ist. Da aber die Javascript-Befehle (für den Balken) instant
angezeigt werden sollten musste das verhindert werden.

6. Wichtig ist ausserdem, das der Browser im Abstand von 30 Sekunden
vom Server Daten bekommt, ansonsten bricht der Browser die Seite ab.
Eventuell könnte das bei Euch das Problem sein, da im Regelfall, wenn
nicht anders eingestellt, das Script dann auch beendet wird.

7. Ne Pauschallösung kenne ich dafür noch nicht, wir haben aus
Komfortgründen uns für die Javascript Variante entschieden.

> Gruss
> Thomas Wenzel

Ich hoffe das hat Dir weitergeholfen ;-)

Gruss
Andreas Lange


php::bar PHP Wiki   -   Listenarchive