code: private function fork(&$socket): int
      {
          $pair = [];
  
          $domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
          if (\socket_create_pair($domain, SOCK_STREAM, 0, $pair) === false) {
              $error = socket_strerror(socket_last_error($pair[0] ?? null));
  
              $this->logger->error('{type}: unable to create socket pair; ' . $error, $this->logContext);
              exit(0);
          }
  
          // Fork child worker.
          $pid = pcntl_fork();
          if ($pid === -1) {
              throw new RuntimeException('Unable to fork child worker.');
          }
  
          if ($pid !== 0) {
              // MASTER
              $this->childProcesses++;
  
              $socket = $pair[0];
              socket_close($pair[1]);
  
              // wait up to 10ms to receive data
              socket_set_option(
                  $socket,
                  SOL_SOCKET,
                  SO_RCVTIMEO,
                  ['sec' => 0, 'usec' => 10000]
              );
  
              return $pid;
          }
  
          $socket = $pair[1];
          socket_close($pair[0]);
  
          register_shutdown_function($this->handleChildErrors($socket));
  
          return $pid;
      }
docs: Forks and creates a socket pair for communication between parent and child process
  
  @param  resource $socket
  @return int PID if master or 0 if child
  
  @throws RuntimeException