Просмотр исходного кода

Simplify timeout handling and really allow millisecond precision, refs #1517

Jordi Boggiano 5 лет назад
Родитель
Сommit
3ee78ae731
1 измененных файлов с 4 добавлено и 7 удалено
  1. 4 7
      src/Monolog/Handler/SocketHandler.php

+ 4 - 7
src/Monolog/Handler/SocketHandler.php

@@ -35,6 +35,7 @@ class SocketHandler extends AbstractProcessingHandler
     private $persistent = false;
     private $errno;
     private $errstr;
+    /** @var ?float */
     private $lastWritingAt;
 
     /**
@@ -355,13 +356,12 @@ class SocketHandler extends AbstractProcessingHandler
     private function writingIsTimedOut(int $sent): bool
     {
         // convert to ms
-        $writingTimeoutMs = $this->writingTimeout * 1000;
-        if (0 === $writingTimeoutMs) {
+        if (0 === $this->writingTimeout) {
             return false;
         }
 
         if ($sent !== $this->lastSentBytes) {
-            $this->lastWritingAt = time();
+            $this->lastWritingAt = microtime(true);
             $this->lastSentBytes = $sent;
 
             return false;
@@ -369,10 +369,7 @@ class SocketHandler extends AbstractProcessingHandler
             usleep(100);
         }
 
-        // convert to ms
-        $lastWritingMs = (time() - $this->lastWritingAt) * 1000;
-
-        if ($lastWritingMs >= $writingTimeoutMs) {
+        if ((microtime(true) - $this->lastWritingAt) >= $this->writingTimeout) {
             $this->closeSocket();
 
             return true;