| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

07-10-2002, 13:31
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
|
|
header Umleitung
Hallo,
wie ist das eigentlich mit dem
header() Befehl?
Werden die Befehle nach header(...) in
einem Script auf jeden Fall noch abgearbeitet,
oder ist das wieder mal eine PHP-Einstellung.
Wird die Ausgabe von header, sofort an den Browser
geschickt, oder auch erst gepuffert, und am Ende
des Scriptes geschickt?
Grund:
In meinen Scripten soll er einiges noch machen,
nachdem der User per header("Location: ...")
auf eine andere Seite verwiesen wurde.
Insbesondere sollen log-Einträge geschrieben,
Mails gesendet, ... werden ohne das der User
erst auf deren Abarbeitung warten muß
|

07-10-2002, 13:34
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
hmm, also ich hab auch nachm header immer onch n paar mysql anweisungen, und die werden eigentlich auch immer abgearbeitet, ich weiss aber nicht, ob wenn man flush() oder sowas macht, dann danach immer noch gearbeitet wird..
|

07-10-2002, 13:44
|
|
MoRtAlAn
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
|
|
normalerweise mache ich nach der Umleitung ein exit();
also:
header("location:bla.de");
exit();
wenn noch sachen vor der umleitung gemacht werden sollen, dann setz sie vor den header (mails versenden sollte gehen), es darf halt nur keine Ausgabe an den Client erfolgen, alles andere ist egal!
gruss
|

07-10-2002, 13:51
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
|
|
zur Zeit habe ich auch einiges so:
header("Location: ...");
// einige SQL Abfragen
// Mails senden
exit();
nun ist aber meine Frage, ob das immer
funktioniert und der User bereits
weitergeleitet ist, oder ob da noch ein flush()
rein sollte.
Auch wenn der Code dadurch nicht schneller wird,
ist die Abarbeitung für den User schneller,
da er nicht immer warten muß.
|

07-10-2002, 13:56
|
|
Rob K
Junior Member
|
|
Registriert seit: Oct 2002
Ort: Dresden
Beiträge: 148
|
|
also ich glaube, eine garantie gibt es für die ausführung nach dem header() nicht!
im manual wird empfohlen, nach dem header() ein exit; zu setzen, um das eventuelle ausführen weiteren codes zu verhindern!
Zitat:
|
wenn noch sachen vor der umleitung gemacht werden sollen, dann setz sie vor den header
|
ganz genau!
__________________
GNU/LINUX
|

07-10-2002, 13:57
|
|
MoRtAlAn
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
|
|
und das funktioniert so ?
flush bringt dir nichts, du willst ja nichts ausgeben, sondern weiterleiten.
erledige alles vor dem Redirect.
exit übrigens ohne ()! sorry
laut manual.
header ("Location: http://www.example.com"); // Umleitung des Browsers
exit; // Sicher stellen, dass nicht trotz Umleitung nachfolgender Code ausgeführt wird.
und vorher alle bearbeitungen. Wie lange aber der User warten muß, kommt darauf an, wie schnell der Server ist, aber theoretisch sollte er davon nichts merken, außer du erstellst riesige Textdateien, etc.
gruss
|

07-10-2002, 14:00
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
leider isses nicht immer möglich den code vor der header zu setzen, bei mir kommt oft darauf an, wie die _get parameter gesetzt sind..
aber ich mal oft mail usw verschickt und user in die DB eingetragen nach dem header, und bisher hat sich keiner beschwert
TBT: der code im der datei mit der weiterleitung wird eigentlich VOR dem aufbau der neuen seite gemacht, sprich, eigentlich direkt machdem klick auf den link,(darum wird auch oft gesagt " nur einmal auf den reply knopf drücken, weil es vorkommt, das es etwas dauer, bis die daten gespeichert werden.)
BTW: 400 posting
Geändert von Campus (07-10-2002 um 14:03 Uhr)
|

07-10-2002, 14:18
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
|
|
@MoRtAlan:
Sorry
Zitat:
www.php.net
The exit() function terminates execution of the script. It prints status just before exiting
|
eine Funktion, also mit ()
Ich will einfach die Wartezeit für den User verkürzen
|

07-10-2002, 14:20
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
was hast du denn bisher ?
content=0.... ?
|

07-10-2002, 14:24
|
|
Rob K
Junior Member
|
|
Registriert seit: Oct 2002
Ort: Dresden
Beiträge: 148
|
|
Zitat:
|
eine Funktion, also mit ()
|
stimmt,!
funzt aber auch ohne () und hat sich irgendwie so eingebürgert ... komisch!
__________________
GNU/LINUX
|

07-10-2002, 14:28
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
|
|
Zitat:
Original geschrieben von Campus
was hast du denn bisher ?
content=0.... ?
|
wie jetzt, was meinst du
|

07-10-2002, 14:37
|
|
Campus
PHP Junior
|
|
Registriert seit: Jul 2002
Ort: D
Beiträge: 842
|
|
Zitat:
Original geschrieben von TBT
Ich will einfach die Wartezeit für den User verkürzen
|
was meinst du damit verkürzen ? wie has du es jetzt ?
|

07-10-2002, 14:39
|
|
MoRtAlAn
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
|
|
irgendwie herrscht hier gerade ein bisschen Chaos
@tbt: ich hatte ja zuerst exit() geschrieben und dann sah ich das gepostete Beispiel aus dem Manual ohne das (). Da hab ich mir halt gedacht, die werden schon recht haben
gruss
|

07-10-2002, 14:42
|
TBT
 Moderator
|
|
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.776
|
|
Beispiel:
- das Script wird abgearbeitet
- am Ende des Scriptes schreibt er noch nen bissel Logdateien
- außerdem werden 2 Emails versendet
- dann kommt die Headerumleitung header();
- exit();
nun will ich aber, das der User schneller auf die neue Seite kommt,
und der Rest (Log und Emails) abgearbeitet wird,
ohne das der User drauf warten muß
also:
- das Script wird abgearbeitet
- dann kommt die Headerumleitung header();
=> hier soll der User schon weg sein (neue Seite sehen)
- am Ende des Scriptes schreibt er noch nen bissel Logdateien
- außerdem werden 2 Emails versendet
- exit();
die Frage ist, klappt das immer, oder gibt es andere
Möglichkeiten was zu abzuarbeiten, ohne das
der User drauf warten muß
|

07-10-2002, 14:47
|
|
Rob K
Junior Member
|
|
Registriert seit: Oct 2002
Ort: Dresden
Beiträge: 148
|
|
Zitat:
nun will ich aber, das der User schneller auf die neue Seite kommt,
und der Rest (Log und Emails) abgearbeitet wird,
ohne das der User drauf warten muß
|
entsteht dadurch tatsächlich eine merkliche verzögerung?
kann ich mir nicht vorstellen, es sei denn die log's sind riesig ....
__________________
GNU/LINUX
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|