Ausgabe zurückhalten (PHP)
-
Hallo zusammen
Gibt es eine Möglichkeit, statischen Code zurückzuhalten oder zu "puffern", bis man diesen mit einem "commit" oder sowas auslöst?$PUFFER->Start(); // Aufzeichnung und Puffer starten
<html>
<head>
<title>MyHomepage</title><link rel="stylesheet" type="text/css" href="stl.css"/>
<!-- Hier kommen noch weitere Informationen wie JavaScripts und lokale Stylsheets, welche unter Umständen nicht an den Browser gesendet werden sollen, falls zu einem späteren Zeitpunkt im Script ein Fehler auftreten sollten. --></head> <body> <?php try{ DoSomething(); } catch(Exception $exp){ $PUFFER->Rollback(); // Alles bisherige verwerfen inlcude("err.php"); $PUFFER->Commit(); // Jetzt an den Browser senden } ?> <h1>Hier kommt wieder statischer Code, welcher allerdings wiederum möglicherweise nicht an den Browser gesendet werden soll, falls zu einem späteren Zeitpunkt im Script ein Fehler auftritt!</h1> <?php try{ DoAnotherThing(); } catch(Exception $exp){ $PUFFER->Rollback(); // Alles bisherige verwerfen inlcude("err.php"); $PUFFER->Commit(); // Jetzt an den Browser senden } ?> <p>Hier kommt wieder statischer Code, welcher allerdings wiederum möglicherweise nicht an den Browser gesendet werden soll, falls zu einem späteren Zeitpunkt im Script ein Fehler auftritt!</p> <?php if(($db = mysql_connect("***")) != null){ DoSomething(); } else{ $PUFFER->Rollback(); // Alles bisherige verwerfen inlcude("err.php"); $PUFFER->Commit(); // Jetzt an den Browser senden } ?> </body> </html> <?php $PUFFER->Commit(); // Jetzt an den Browser senden ?>
Hoffe jemand hat eine Idee, möglicherweise ist auch eine zusätzliche Software notwendig?
Mfg Ishildur
-
Schau Dir mal ob_start und Konsorten an.
-
Hey Danke Taauusendmal! Das ist 100%zig das, was ich gesucht hatte. Habe nicht erwartet, dass es hierfür bereits eine Built-in Lösung gibt!
-
Hey, in diesem Kontext bin ich noch auf eine weitere Frage gestossen:
Gibt es eine Möglichkeit, Exception, welche der Benutzer nicht abgefangen hat, irgendwo global abzufangen?function handle_exception($exp){ echo var_dump($exp); } $global_exception_handler = $handle_exception;
Mfg Ishildur
-
Pack halt vor dem einbinden jeder Bibliothek ein
try {
Und ans Ende der Datei ein
} catch(Exception $exception) { }
Es ist aber nicht der Sinn von Exceptions, dass sie global abgefangen und ignoriert werden. Du musst also schon eine sinnvolle Verwendung dafür haben
btw. bitte ein Thema pro Post, sonst wird's unübersichtlich
(aber jetzt nicht n neues aufmachen!)
-
árn[y]ék schrieb:
Es ist aber nicht der Sinn von Exceptions, dass sie global abgefangen und ignoriert werden. Du musst also schon eine sinnvolle Verwendung dafür haben
Jein. Das stimmt natuerlich bis zu einem Teil: aber man kann sie ja auch auf dem Top Level abfangen und dann als "System Absturz" oder "Fatal Error" interpretieren.
http://at.php.net/manual/en/function.set-exception-handler.php
ist hier das gesuchte.
wir haben zB immer so einen top level error handler, falls etwas schief geht, dass man vernuenftig den fehler loggen kann und dem user eine gute error page zeigen kann. wobei PHP hier richtig viel mist baut
-
Shade Of Mine schrieb:
árn[y]ék schrieb:
Es ist aber nicht der Sinn von Exceptions, dass sie global abgefangen und ignoriert werden. Du musst also schon eine sinnvolle Verwendung dafür haben
Jein. Das stimmt natuerlich bis zu einem Teil: aber man kann sie ja auch auf dem Top Level abfangen und dann als "System Absturz" oder "Fatal Error" interpretieren.
War wohl mehrdeutig. Etwas wie "Systemabsturz" oder "Fatal Error" hatte ich mit der "sinnvollen Verwendung" gemeint