summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--app/Core/Template.php53
2 files changed, 52 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 99688c66..1f8fa782 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,7 @@ Improvements:
* Reduce the number of SQL queries for project daily column stats
* Remove event subscriber to update date_moved field
* Make sure that some event subscribers are not executed multiple times
+* Show rendering time of individual templates when debug mode is enabled
Bug fixes:
diff --git a/app/Core/Template.php b/app/Core/Template.php
index ce2884a7..8ded6f7c 100644
--- a/app/Core/Template.php
+++ b/app/Core/Template.php
@@ -19,6 +19,50 @@ class Template extends Helper
private $overrides = array();
/**
+ * Rendering start time
+ *
+ * @access private
+ * @var float
+ */
+ private $startTime = 0;
+
+ /**
+ * Total rendering time
+ *
+ * @access private
+ * @var float
+ */
+ private $renderingTime = 0;
+
+ /**
+ * Method executed before the rendering
+ *
+ * @access protected
+ * @param string $template
+ */
+ protected function beforeRender($template)
+ {
+ if (DEBUG) {
+ $this->startTime = microtime(true);
+ }
+ }
+
+ /**
+ * Method executed after the rendering
+ *
+ * @access protected
+ * @param string $template
+ */
+ protected function afterRender($template)
+ {
+ if (DEBUG) {
+ $duration = microtime(true) - $this->startTime;
+ $this->renderingTime += $duration;
+ $this->container['logger']->debug('Rendering '.$template.' in '.$duration.'s, total='.$this->renderingTime);
+ }
+ }
+
+ /**
* Render a template
*
* Example:
@@ -32,11 +76,16 @@ class Template extends Helper
*/
public function render($__template_name, array $__template_args = array())
{
- extract($__template_args);
+ $this->beforeRender($__template_name);
+ extract($__template_args);
ob_start();
include $this->getTemplateFile($__template_name);
- return ob_get_clean();
+ $html = ob_get_clean();
+
+ $this->afterRender($__template_name);
+
+ return $html;
}
/**