In PHP -Programmierung sind Exit und OB_end_flush () zwei gemeinsame Funktionen. Der Beenden wird verwendet, um die Ausführung des Skripts zu beenden, während OB_END_FLUSH () verwendet wird, um den zwischengespeicherten Inhalt auszugeben und den Ausgangspuffer zu schließen. Obwohl die beiden Funktionen unterschiedlich funktionieren, können sie in einigen Fällen zusammen verwendet werden. Wenn also Exit und OB_end_flush () zusammen verwendet werden, haben sie Konflikte? Wir werden ihre Kompatibilität durch detaillierte Analyse verstehen.
Die Funktion exit () wird verwendet, um die Ausführung des aktuellen Skripts zu beenden oder einen Statuscode auszugeben und die Ausführung zu beenden. Es ist sehr einfach zu verwenden, wie folgt:
exit("Goodbye!");
Diese Codezeile druckt "Auf Wiedersehen!" und die Ausführung des Skripts beenden. Der Beenden kann auch einen Ganzzahlparameter als Statuscode für die Skriptausführung empfangen. Es ist üblich, durch Beenden (1) zu beenden, wenn das Skript auf einen tödlichen Fehler trifft und normal durch Beenden (0) beenden kann.
exit(1); // Beenden Sie den Statuscode und geben Sie den Statuscode zurück 1
OB_END_FLUSH () ist eine Funktion, die sich auf den PHP -Ausgangspuffer bezieht. Sein Ziel ist es, den Pufferinhalt in den Browser auszugeben und den Ausgangspuffer zu schließen. Wenn der Ausgangspuffer nicht eingeschaltet ist, wird beim Aufrufen dieser Funktion eine Warnung verursacht.
ob_start(); // Ausgangspufferung starten
echo "Hello, world!";
ob_end_flush(); // Ausgangspuffer und schließen Sie den Puffer
Wenn wir exit () verwenden, nachdem er OB_END_FLUSH () aufgerufen hat, beendet Exit () die Ausführung des Skripts direkt. Dies bedeutet, dass, wenn exit () aufgerufen wird, die Ausführung nachfolgender PHP -Code, einschließlich gepufferter Inhalte, die möglicherweise ausgegeben werden kann, nicht mehr ausführen. Daher verhindert Exit () , dass der Inhalt des Ausgangspuffers vollständig an den Browser gesendet wird.
ob_start(); // Ausgangspufferung starten
echo "Hello, ";
ob_end_flush(); // Cache zuerst ausgeben
exit("Goodbye!"); // implementieren exit,Drehbuch -Beendigung
In diesem Beispiel wird "Hallo" über ob_end_flush () und "Auf Wiedersehen!" Ausgegeben. wird von exit () abgebrochen. Wenn OB_end_flush () vor Exit () gerufen wird, wird der vorherige Inhalt korrekt ausgegeben, die folgende Exit () wird jedoch nicht erneut ausgegeben.
Wenn wir zuerst OB_end_flush () ausführen und der Inhalt im Ausgabebuffer zu diesem Zeitpunkt an den Browser gesendet wird, wird der Browser auch dann, wenn Exit () aufgerufen wird, die Ausgabe erhalten und wird nicht mehr von Exit () betroffen. Mit anderen Worten, OB_END_FLUSH () wird zunächst den Inhalt des Puffers in den Browser veröffentlicht, und exit () beendet die Ausführung des Skripts.
ob_start(); // Ausgangspufferung starten
echo "Starting...";
ob_end_flush(); // Ausgangspuffer und schließen Sie den Puffer
exit("Ending now.");
In diesem Beispiel wird der Browser zuerst "Start ..." angezeigt, und dann endet das Skript sofort und "Jetzt endet". wird nicht angezeigt.
Rufen Sie zuerst OB_end_flush () an und dann beenden () : Normalerweise gibt es kein Problem, OB_END_FLUSH () gibt gepufferte Inhalte aus und beendet () die Skriptausführung.
Rufen Sie zuerst exit () an und rufen Sie dann OB_end_flush () an : Wenn exit () vor OB_END_FLUSH () gerufen wird, wird der Ausgabebufferinhalt nicht an den Browser gesendet. Da exit () die Skriptausführung direkt beendet, werden alle nachfolgenden Codes (einschließlich ob_end_flush () ) nicht ausgeführt.
Verschachtelte Ausgangspufferung : Wenn OB_Start () oder ob_flush () mehrmals verwendet wird, bevor sie ob_end_flush () aufgerufen werden, achten Sie auf ihre Anrufbearbeitung, um unnötige Duplikation von Ausgabe- oder Pufferfehlern zu vermeiden.
Ob es Konflikte geben oder nicht, wenn es mit Exit () und ob_end_flush () verwendet wird, hängt von der Reihenfolge ihres Anrufs ab. Um unnötige Probleme zu vermeiden, wird empfohlen, nach dem Aufrufen von OB_end_flush () immer EXIT () aufzurufen, was sicherstellt, dass der Inhalt des Ausgabeduffers vor dem Skript korrekt ausgegeben wird. Wenn OB_END_FLUSH () vor Exit () aufgerufen wird, kann sichergestellt werden, dass der Pufferinhalt verarbeitet wird und exit () nur die Ausführung des Skripts beeinflusst.
Indem wir die Anrufreihenfolge dieser beiden Funktionen vernünftigerweise verwalten, können wir sicherstellen, dass die Ausgabe des Programms nicht vom Ruf von Exit () betroffen ist, wodurch Konflikte vermieden werden.