فهرست منبع

Optimize ChromePHP/FirePHP to skip header generation when they are disabled, refs #360

Jordi Boggiano 11 سال پیش
والد
کامیت
7567cecfa5

+ 7 - 3
src/Monolog/Handler/ChromePHPHandler.php

@@ -100,15 +100,19 @@ class ChromePHPHandler extends AbstractProcessingHandler
      */
     protected function send()
     {
-        if (self::$overflowed) {
+        if (self::$overflowed || !self::$sendHeaders) {
             return;
         }
 
         if (!self::$initialized) {
+            self::$initialized = true;
+
             self::$sendHeaders = $this->headersAccepted();
-            self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
+            if (!self::$sendHeaders) {
+                return;
+            }
 
-            self::$initialized = true;
+            self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
         }
 
         $json = @json_encode(self::$json);

+ 9 - 2
src/Monolog/Handler/FirePHPHandler.php

@@ -131,15 +131,22 @@ class FirePHPHandler extends AbstractProcessingHandler
      */
     protected function write(array $record)
     {
+        if (!self::$sendHeaders) {
+            return;
+        }
+
         // WildFire-specific headers must be sent prior to any messages
         if (!self::$initialized) {
+            self::$initialized = true;
+
             self::$sendHeaders = $this->headersAccepted();
+            if (!self::$sendHeaders) {
+                return;
+            }
 
             foreach ($this->getInitHeaders() as $header => $content) {
                 $this->sendHeader($header, $content);
             }
-
-            self::$initialized = true;
         }
 
         $header = $this->createRecordHeader($record);

+ 2 - 0
tests/Monolog/Handler/ChromePHPHandlerTest.php

@@ -22,6 +22,7 @@ class ChromePHPHandlerTest extends TestCase
     protected function setUp()
     {
         TestChromePHPHandler::reset();
+        $_SERVER['HTTP_USER_AGENT'] = 'Monolog Test; Chrome/1.0';
     }
 
     public function testHeaders()
@@ -124,6 +125,7 @@ class TestChromePHPHandler extends ChromePHPHandler
     {
         self::$initialized = false;
         self::$overflowed = false;
+        self::$sendHeaders = true;
         self::$json['rows'] = array();
     }
 

+ 2 - 0
tests/Monolog/Handler/FirePHPHandlerTest.php

@@ -22,6 +22,7 @@ class FirePHPHandlerTest extends TestCase
     public function setUp()
     {
         TestFirePHPHandler::reset();
+        $_SERVER['HTTP_USER_AGENT'] = 'Monolog Test; FirePHP/1.0';
     }
 
     public function testHeaders()
@@ -79,6 +80,7 @@ class TestFirePHPHandler extends FirePHPHandler
     public static function reset()
     {
         self::$initialized = false;
+        self::$sendHeaders = true;
         self::$messageIndex = 1;
     }