message: optimize stream timeout
diff: @@ -69,7 +69,7 @@ static php_stream_ops socket_ops
  typedef struct
  {
  php_netstream_data_t stream;
  - struct timeval timeout;
  + double timeout;
  Socket *socket;
  } php_swoole_netstream_data_t;
  @@ -271,8 +271,7 @@ static size_t socket_read(php_stream *stream, char *buf, size_t count)
  {
  return 0;
  }
  - double _timeout = (double) abstract->timeout.tv_sec + ((double) abstract->timeout.tv_usec / 1000 / 1000);
  - if (!_timeout && FG(default_socket_timeout) > 0)
  + if (!abstract->timeout && FG(default_socket_timeout) > 0)
  {
  sock->set_timeout((double) FG(default_socket_timeout));
  }
  @@ -745,6 +744,7 @@ static int socket_set_option(php_stream *stream, int option, int value, void *pt
  {
  php_swoole_netstream_data_t *abstract = (php_swoole_netstream_data_t *) stream->abstract;
  Socket *sock = (Socket*) abstract->socket;
  + struct timeval default_timeout = { 0, 0 };
  switch (option)
  {
  case PHP_STREAM_OPTION_XPORT_API:
  @@ -799,8 +799,9 @@ static int socket_set_option(php_stream *stream, int option, int value, void *pt
  break;
  case PHP_STREAM_OPTION_READ_TIMEOUT:
  - abstract->timeout = *(struct timeval*) ptrparam;
  - sock->set_timeout(&abstract->timeout);
  + default_timeout = *(struct timeval*) ptrparam;
  + abstract->timeout = (double) default_timeout.tv_sec + ((double) default_timeout.tv_usec / 1000 / 1000);
  + sock->set_timeout(abstract->timeout);
  break;
  #ifdef SW_USE_OPENSSL
  case PHP_STREAM_OPTION_CRYPTO_API:
  