示例#1
0
 /**
  * {@inheritdoc}
  */
 public function process(string $level, string $message, array $context, string $origin)
 {
     $error = ($context['exception'] ?? null) instanceof \Throwable ? $context['exception'] : null;
     if ($error && $message === '') {
         $message = \sprintf('Uncaught %s: "%s"', \get_class($error), \trim(\preg_replace("'\\s+'", ' ', $error->getMessage())));
     }
     if ($origin !== '') {
         $message = '[' . $origin . '] ' . $message;
     }
     $message = '[' . \strtoupper($level) . '] ' . $message;
     if ($error) {
         $message .= "\n" . \trim($error->getTraceAsString());
     }
     $this->writer->write(\str_replace("\n", "\n> ", \trim($message)) . "\n");
 }
示例#2
0
 protected function socketWriter($socket, Channel $channel, callable $transform = null) : \Generator
 {
     $writer = new SocketWriter($socket);
     $len = 0;
     try {
         while (null !== ($chunk = (yield $channel->receive()))) {
             $len += (yield $writer->write($transform ? $transform($chunk) : $chunk));
         }
         return $len;
     } catch (\Throwable $e) {
         $channel->close($e);
         throw $e;
     } finally {
         $writer->dispose();
     }
 }
示例#3
0
 protected function handleSendfile(string $path, $socket, int $length, int $offset) : \Generator
 {
     $stream = (yield $this->readStream($path, $offset));
     try {
         $writer = new SocketWriter($socket);
         $len = 0;
         try {
             while ($len < $length && null !== ($chunk = (yield $stream->read(\min(4096, $length - $len))))) {
                 $len += (yield $writer->write($chunk));
             }
             return $len;
         } finally {
             $writer->dispose();
         }
     } catch (\Throwable $e) {
         throw new FilesystemException(\sprintf('Failed to send file: "%s"', $path), 0, $e);
     } finally {
         $stream->close();
     }
 }