diff --git a/composer.json b/composer.json index 7a2e4cb20..82067afc3 100644 --- a/composer.json +++ b/composer.json @@ -13,8 +13,8 @@ "symfony/console": "~2.5", "symfony/event-dispatcher": "~2.5", "doctrine/cache": "~1.3", - "tracy/tracy": "~2.2", - "gregwar/image": "~2.0", + "tracy/tracy": "2.3.*@dev", + "gregwar/image": "~2.0", "ircmaxell/password-compat": "1.0.*", "mrclay/minify": "dev-master", "donatj/phpuseragentparser": "dev-master", diff --git a/system/src/Grav/Common/Debugger.php b/system/src/Grav/Common/Debugger.php index 3ffbd50b0..93aafee67 100644 --- a/system/src/Grav/Common/Debugger.php +++ b/system/src/Grav/Common/Debugger.php @@ -70,4 +70,9 @@ class Debugger { TracyDebugger::dump($var); } + + public static function barDump($var, $title = NULL, array $options = NULL) + { + TracyDebugger::barDump($var, $title, $options); + } } diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index 07d548d75..476da4ac1 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -143,10 +143,9 @@ class Grav extends Container echo $this->output; - ob_end_flush(); - flush(); - $this->fireEvent('onOutputRendered'); + + register_shutdown_function([$this, 'shutdown']); } /** @@ -209,4 +208,25 @@ class Grav extends Container $events = $this['events']; return $events->dispatch($eventName, $event); } + + /** + * Set the final content length for the page and flush the buffer + * + */ + public function shutdown() + { + set_time_limit(0); + ignore_user_abort(true); + + header('Content-length: ' . ob_get_length()); + header("Connection: close\r\n"); + + ob_end_flush(); + ob_flush(); + flush(); + + session_write_close(); + + $this->fireEvent('onShutdown'); + } }