Failing with grace and artistry
1 Jun 2007
One of the problems I’ve always had with PHP error handling is catching the fatal errors. If a php script encounters a fatal error it stops, and the desired error handling code does not get executed.
So the user will (usually) be confronted with a blank screen and, worse still, since the error isn’t logged I don’t know about it and therefore can’t fix it.
It’s a rare and confident user who will report a blank page or other such glitch; people are so used to working with a certain level of pain when using a computer that they just assume it’s unavoidable or that it’s been caused by their own inadequacy in some way.
Anyway, (thank-you PHP London user group) I now have a solution using the register_shutdown_function()
<? register_shutdown_function('cleanExit'); // ... go and do all sorts of exciting stuff ... $running = false; function cleanExit() { if ($GLOBALS['running'])) { // script is still running - it's an ERROR // tell Bronwen about the error // tell user it's not their fault } } >