PHP shutdown sequence

I needed to figure out in what order PHP shuts down, after the end of a script has been reached, so I created a small testing script. Maybe this is of use for someone else trying to google this like I tried.


    // Testing shutdown sequence

    function shutdown() {

        echo "register_shutdown_function\n";



    class MyClass {

        function __destruct() {

           echo "Object destructor\n";



    function obcallback($buffer) {

        $buffer .= "Output buffer callback\n";
        return $buffer;



    $myObject = new MyClass;

    function dummy() { }

    function sessionclose() {

        echo "Session close\n";


    function sessionwrite() {

        echo "Session write\n";




The output, on PHP 5.2.0 on the cli is:

Object destructor
Output buffer callback
Session write
Session close

I was mostly interested in this because I wanted to work with a custom session handler. This means I can basically not use objects in combination with session handlers, unless I don't rely on $this.

Bad Gateway is Toronto-based team of software engineers. We build good APIs and websites.

Want to work with me on your next project?

Email us

Web mentions


  • Richard Thomas

    Richard Thomas

    Yes you can, you need to register session_close in your register_shutdown_function



    This closes the session up prior to the objects being destroyed
  • Evert


    Thats smart!
  • Johannes


    That part of the PHP code is een good commented, so you can et the real order without much internals&C knowledge:
  • Evert


    That is pretty cool.. looks like I haven't really missed anything =)
  • Adam


    I always love investigative PHPing. Good work and very useful!
  • open source

    open source

    I think it is a tip of the day :)
  • zib3r


    Well , man .... it was awesome.. of course. You can be better than that.But what can i say.You can say just that you're the best and fuck the rest.Keep it up the good work.Bye . From Oradea/Romania/Alexandru.