]> git.mxchange.org Git - friendica.git/blobdiff - src/Util/Profiler.php
Merge remote-tracking branch 'upstream/2019.03-RC' into worker2
[friendica.git] / src / Util / Profiler.php
index 2d3da3a9c0b99f762a29f9b9bb9e7288a87ab337..fe72efce40beec2e623598e3c6efd35c050d3f54 100644 (file)
@@ -32,6 +32,28 @@ class Profiler implements ContainerInterface
         */
        private $rendertime;
 
+       /**
+        * True, if the Profiler should measure the whole rendertime including functions
+        *
+        * @return bool
+        */
+       public function isRendertime()
+       {
+               return $this->rendertime;
+       }
+
+       /**
+        * Updates the enabling of the current profiler
+        *
+        * @param bool $enabled
+        * @param bool $renderTime
+        */
+       public function update($enabled = false, $renderTime = false)
+       {
+               $this->enabled = $enabled;
+               $this->rendertime = $renderTime;
+       }
+
        /**
         * @param bool $enabled           True, if the Profiler is enabled
         * @param bool $renderTime        True, if the Profiler should measure the whole rendertime including functions
@@ -120,86 +142,97 @@ class Profiler implements ContainerInterface
        }
 
        /**
-        * Save the current profiling data to a log entry
+        * Returns the rendertime string
         *
-        * @param LoggerInterface $logger The logger to save the current log
-        * @param string          $message Additional message for the log
+        * @return string the rendertime
         */
-       public function saveLog(LoggerInterface $logger, $message = '')
+       public function getRendertimeString()
        {
-               // Write down the performance values into the log
-               if (!$this->enabled) {
-                       return;
-               }
-               $duration = microtime(true) - $this->get('start');
-               $logger->info(
-                       $message,
-                       [
-                               'action' => 'profiling',
-                               'database_read' => round($this->get('database') - $this->get('database_write'), 3),
-                               'database_write' => round($this->get('database_write'), 3),
-                               'cache_read' => round($this->get('cache'), 3),
-                               'cache_write' => round($this->get('cache_write'), 3),
-                               'network_io' => round($this->get('network'), 2),
-                               'file_io' => round($this->get('file'), 2),
-                               'other_io' => round($duration - ($this->get('database')
-                                               + $this->get('cache') + $this->get('cache_write')
-                                               + $this->get('network') + $this->get('file')), 2),
-                               'total' => round($duration, 2)
-                       ]
-               );
+               $output = '';
 
-               if (!$this->rendertime) {
-                       return;
+               if (!$this->enabled || !$this->rendertime) {
+                       return $output;
                }
-               
-               $o = '';
+
                if (isset($this->callstack["database"])) {
-                       $o .= "\nDatabase Read:\n";
+                       $output .= "\nDatabase Read:\n";
                        foreach ($this->callstack["database"] as $func => $time) {
                                $time = round($time, 3);
                                if ($time > 0) {
-                                       $o .= $func . ": " . $time . "\n";
+                                       $output .= $func . ": " . $time . "\n";
                                }
                        }
                }
                if (isset($this->callstack["database_write"])) {
-                       $o .= "\nDatabase Write:\n";
+                       $output .= "\nDatabase Write:\n";
                        foreach ($this->callstack["database_write"] as $func => $time) {
                                $time = round($time, 3);
                                if ($time > 0) {
-                                       $o .= $func . ": " . $time . "\n";
+                                       $output .= $func . ": " . $time . "\n";
                                }
                        }
                }
                if (isset($this->callstack["cache"])) {
-                       $o .= "\nCache Read:\n";
+                       $output .= "\nCache Read:\n";
                        foreach ($this->callstack["cache"] as $func => $time) {
                                $time = round($time, 3);
                                if ($time > 0) {
-                                       $o .= $func . ": " . $time . "\n";
+                                       $output .= $func . ": " . $time . "\n";
                                }
                        }
                }
                if (isset($this->callstack["cache_write"])) {
-                       $o .= "\nCache Write:\n";
+                       $output .= "\nCache Write:\n";
                        foreach ($this->callstack["cache_write"] as $func => $time) {
                                $time = round($time, 3);
                                if ($time > 0) {
-                                       $o .= $func . ": " . $time . "\n";
+                                       $output .= $func . ": " . $time . "\n";
                                }
                        }
                }
                if (isset($this->callstack["network"])) {
-                       $o .= "\nNetwork:\n";
+                       $output .= "\nNetwork:\n";
                        foreach ($this->callstack["network"] as $func => $time) {
                                $time = round($time, 3);
                                if ($time > 0) {
-                                       $o .= $func . ": " . $time . "\n";
+                                       $output .= $func . ": " . $time . "\n";
                                }
                        }
                }
-               $logger->info($message . ": " . $o, ['action' => 'profiling']);
+
+               return $output;
+       }
+
+       /**
+        * Save the current profiling data to a log entry
+        *
+        * @param LoggerInterface $logger  The logger to save the current log
+        * @param string          $message Additional message for the log
+        */
+       public function saveLog(LoggerInterface $logger, $message = '')
+       {
+               $duration = microtime(true) - $this->get('start');
+               $logger->info(
+                       $message,
+                       [
+                               'action' => 'profiling',
+                               'database_read' => round($this->get('database') - $this->get('database_write'), 3),
+                               'database_write' => round($this->get('database_write'), 3),
+                               'cache_read' => round($this->get('cache'), 3),
+                               'cache_write' => round($this->get('cache_write'), 3),
+                               'network_io' => round($this->get('network'), 2),
+                               'file_io' => round($this->get('file'), 2),
+                               'other_io' => round($duration - ($this->get('database')
+                                               + $this->get('cache') + $this->get('cache_write')
+                                               + $this->get('network') + $this->get('file')), 2),
+                               'total' => round($duration, 2)
+                       ]
+               );
+
+               if ($this->isRendertime()) {
+                       $output = $this->getRendertimeString();
+                       $logger->info($message . ": " . $output, ['action' => 'profiling']);
+               }
        }
 
        /**