public function checkConnection($socket)
    {
        // Remove EV_EXPECT for windows.
        if(DIRECTORY_SEPARATOR === '\\') {
            Worker::$globalEvent->del($socket, EventInterface::EV_EXCEPT);
        }
        // Check socket state.
        if ($address = stream_socket_get_name($socket, true)) {
            // Remove write listener.
            Worker::$globalEvent->del($socket, EventInterface::EV_WRITE);
            // Nonblocking.
            stream_set_blocking($socket, 0);
            // Compatible with hhvm
            if (function_exists('stream_set_read_buffer')) {
                stream_set_read_buffer($socket, 0);
            }
            // Try to open keepalive for tcp and disable Nagle algorithm.
            if (function_exists('socket_import_stream') && $this->transport === 'tcp') {
                $raw_socket = socket_import_stream($socket);
                socket_set_option($raw_socket, SOL_SOCKET, SO_KEEPALIVE, 1);
                socket_set_option($raw_socket, SOL_TCP, TCP_NODELAY, 1);
            }
            // Register a listener waiting read event.
            Worker::$globalEvent->add($socket, EventInterface::EV_READ, array($this, 'baseRead'));
            // There are some data waiting to send.
            if ($this->_sendBuffer) {
                Worker::$globalEvent->add($socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));
            }
            $this->_status                = self::STATUS_ESTABLISHED;
            $this->_remoteAddress         = $address;
            $this->_sslHandshakeCompleted = true;

            // Try to emit onConnect callback.
            if ($this->onConnect) {
                try {
                    call_user_func($this->onConnect, $this);
                } catch (\Exception $e) {
                    Worker::log($e);
                    exit(250);
                } catch (\Error $e) {
                    Worker::log($e);
                    exit(250);
                }
            }
            // Try to emit protocol::onConnect
            if (method_exists($this->protocol, 'onConnect')) {
                try {
                    call_user_func(array($this->protocol, 'onConnect'), $this);
                } catch (\Exception $e) {
                    Worker::log($e);
                    exit(250);
                } catch (\Error $e) {
                    Worker::log($e);
                    exit(250);
                }
            }
        } else {
            // Connection failed.
            $this->emitError(WORKERMAN_CONNECT_FAIL, 'connect ' . $this->_remoteAddress . ' fail after ' . round(microtime(true) - $this->_connectStartTime, 4) . ' seconds');
            if ($this->_status === self::STATUS_CLOSING) {
                $this->destroy();
            }
            if ($this->_status === self::STATUS_CLOSED) {
                $this->onConnect = null;
            }
        }
    }
public function checkConnection($socket)
    {
        // Remove EV_EXPECT for windows.
        if(DIRECTORY_SEPARATOR === '\\') {
            Worker::$globalEvent->del($socket, EventInterface::EV_EXCEPT);
        }
        // Check socket state.
        if ($address = stream_socket_get_name($socket, true)) {
            // Remove write listener.
            Worker::$globalEvent->del($socket, EventInterface::EV_WRITE);
            // Nonblocking.
            stream_set_blocking($socket, 0);
            // Compatible with hhvm
            if (function_exists('stream_set_read_buffer')) {
                stream_set_read_buffer($socket, 0);
            }
            // Try to open keepalive for tcp and disable Nagle algorithm.
            if (function_exists('socket_import_stream') && $this->transport === 'tcp') {
                $raw_socket = socket_import_stream($socket);
                socket_set_option($raw_socket, SOL_SOCKET, SO_KEEPALIVE, 1);
                socket_set_option($raw_socket, SOL_TCP, TCP_NODELAY, 1);
            }
            // Register a listener waiting read event.
            Worker::$globalEvent->add($socket, EventInterface::EV_READ, array($this, 'baseRead'));
            // There are some data waiting to send.
            if ($this->_sendBuffer) {
                Worker::$globalEvent->add($socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));
            }
            $this->_status                = self::STATUS_ESTABLISHED;
            $this->_remoteAddress         = $address;
            $this->_sslHandshakeCompleted = true;

            // Try to emit onConnect callback.
            if ($this->onConnect) {
                try {
                    call_user_func($this->onConnect, $this);
                } catch (\Exception $e) {
                    Worker::log($e);
                    exit(250);
                } catch (\Error $e) {
                    Worker::log($e);
                    exit(250);
                }
            }
            // Try to emit protocol::onConnect
            if (method_exists($this->protocol, 'onConnect')) {
                try {
                    call_user_func(array($this->protocol, 'onConnect'), $this);
                } catch (\Exception $e) {
                    Worker::log($e);
                    exit(250);
                } catch (\Error $e) {
                    Worker::log($e);
                    exit(250);
                }
            }
        } else {
            // Connection failed.
            $this->emitError(WORKERMAN_CONNECT_FAIL, 'connect ' . $this->_remoteAddress . ' fail after ' . round(microtime(true) - $this->_connectStartTime, 4) . ' seconds');
            if ($this->_status === self::STATUS_CLOSING) {
                $this->destroy();
            }
            if ($this->_status === self::STATUS_CLOSED) {
                $this->onConnect = null;
            }
        }
    }
public function checkConnection ( $ socket ) { // Remove EV_EXPECT for windows. if ( DIRECTORY_SEPARATOR === '\\' ) { Worker :: $ globalEvent -> del ( $ socket , EventInterface :: EV_EXCEPT ) ; } // Check socket state. if ( $ address = stream_socket_get_name ( $ socket , true ) ) { // Remove write listener. Worker :: $ globalEvent -> del ( $ socket , EventInterface :: EV_WRITE ) ; // Nonblocking. stream_set_blocking ( $ socket , 0 ) ; // Compatible with hhvm if ( function_exists ( 'stream_set_read_buffer' ) ) { stream_set_read_buffer ( $ socket , 0 ) ; } // Try to open keepalive for tcp and disable Nagle algorithm. if ( function_exists ( 'socket_import_stream' ) && $ this -> transport === 'tcp' ) { $ raw_socket = socket_import_stream ( $ socket ) ; socket_set_option ( $ raw_socket , SOL_SOCKET , SO_KEEPALIVE , 1 ) ; socket_set_option ( $ raw_socket , SOL_TCP , TCP_NODELAY , 1 ) ; } // Register a listener waiting read event. Worker :: $ globalEvent -> add ( $ socket , EventInterface :: EV_READ , array ( $ this , 'baseRead' ) ) ; // There are some data waiting to send. if ( $ this -> _sendBuffer ) { Worker :: $ globalEvent -> add ( $ socket , EventInterface :: EV_WRITE , array ( $ this , 'baseWrite' ) ) ; } $ this -> _status = self :: STATUS_ESTABLISHED ; $ this -> _remoteAddress = $ address ; $ this -> _sslHandshakeCompleted = true ; // Try to emit onConnect callback. if ( $ this -> onConnect ) { try { call_user_func ( $ this -> onConnect , $ this ) ; } catch ( \ Exception $ e ) { Worker :: log ( $ e ) ; exit ( 250 ) ; } catch ( \ Error $ e ) { Worker :: log ( $ e ) ; exit ( 250 ) ; } } // Try to emit protocol::onConnect if ( method_exists ( $ this -> protocol , 'onConnect' ) ) { try { call_user_func ( array ( $ this -> protocol , 'onConnect' ) , $ this ) ; } catch ( \ Exception $ e ) { Worker :: log ( $ e ) ; exit ( 250 ) ; } catch ( \ Error $ e ) { Worker :: log ( $ e ) ; exit ( 250 ) ; } } } else { // Connection failed. $ this -> emitError ( WORKERMAN_CONNECT_FAIL , 'connect ' . $ this -> _remoteAddress . ' fail after ' . round ( microtime ( true ) - $ this -> _connectStartTime , 4 ) . ' seconds' ) ; if ( $ this -> _status === self :: STATUS_CLOSING ) { $ this -> destroy ( ) ; } if ( $ this -> _status === self :: STATUS_CLOSED ) { $ this -> onConnect = null ; } } }
Check connection is successfully established or faild.

@param resource $socket
@return void
Check connection is successfully established or faild .