public static function read($socket)
    {
        $header = '';
        do {
            $buf = socket_read($socket, 12 - self::stringLength($header));
            $header .= $buf;
        } while ($buf !== false &&
                 $buf !== '' && self::stringLength($header) < 12);

        if ($buf === '') {
            throw new Exception('Connection was reset');
        }

        if (self::stringLength($header) == 0) {
            return array();
        }
        $resp = @unpack('a4magic/Ntype/Nlen', $header);

        if (!count($resp) == 3) {
            throw new Exception('Received an invalid response');
        }

        if (!isset(self::$magic[$resp['type']])) {
            throw new Exception(
                'Invalid response magic returned: ' . $resp['type']
            );
        }

        $return = array();
        if ($resp['len'] > 0) {
            $data = '';
            while (self::stringLength($data) < $resp['len']) {
                $data .= socket_read($socket, $resp['len'] - self::stringLength($data));
            }

            $d = explode("\x00", $data);
            foreach (self::$magic[$resp['type']][1] as $i => $a) {
                $return[$a] = $d[$i];
            }
        }

        $function = self::$magic[$resp['type']][0];
        if ($function == 'error') {
            if (!self::stringLength($return['err_text'])) {
                $return['err_text'] = 'Unknown error; see error code.';
            }

            throw new Exception(
                $return['err_text'], $return['err_code']
            );
        }

        return array('function' => self::$magic[$resp['type']][0],
                     'type' => $resp['type'],
                     'data' => $return, );
    }
public static function read($socket)
    {
        $header = '';
        do {
            $buf = socket_read($socket, 12 - self::stringLength($header));
            $header .= $buf;
        } while ($buf !== false &&
                 $buf !== '' && self::stringLength($header) < 12);

        if ($buf === '') {
            throw new Exception('Connection was reset');
        }

        if (self::stringLength($header) == 0) {
            return array();
        }
        $resp = @unpack('a4magic/Ntype/Nlen', $header);

        if (!count($resp) == 3) {
            throw new Exception('Received an invalid response');
        }

        if (!isset(self::$magic[$resp['type']])) {
            throw new Exception(
                'Invalid response magic returned: ' . $resp['type']
            );
        }

        $return = array();
        if ($resp['len'] > 0) {
            $data = '';
            while (self::stringLength($data) < $resp['len']) {
                $data .= socket_read($socket, $resp['len'] - self::stringLength($data));
            }

            $d = explode("\x00", $data);
            foreach (self::$magic[$resp['type']][1] as $i => $a) {
                $return[$a] = $d[$i];
            }
        }

        $function = self::$magic[$resp['type']][0];
        if ($function == 'error') {
            if (!self::stringLength($return['err_text'])) {
                $return['err_text'] = 'Unknown error; see error code.';
            }

            throw new Exception(
                $return['err_text'], $return['err_code']
            );
        }

        return array('function' => self::$magic[$resp['type']][0],
                     'type' => $resp['type'],
                     'data' => $return, );
    }
public static function read ( $ socket ) { $ header = '' ; do { $ buf = socket_read ( $ socket , 12 - self :: stringLength ( $ header ) ) ; $ header .= $ buf ; } while ( $ buf !== false && $ buf !== '' && self :: stringLength ( $ header ) < 12 ) ; if ( $ buf === '' ) { throw new Exception ( 'Connection was reset' ) ; } if ( self :: stringLength ( $ header ) == 0 ) { return array ( ) ; } $ resp = @ unpack ( 'a4magic/Ntype/Nlen' , $ header ) ; if ( ! count ( $ resp ) == 3 ) { throw new Exception ( 'Received an invalid response' ) ; } if ( ! isset ( self :: $ magic [ $ resp [ 'type' ] ] ) ) { throw new Exception ( 'Invalid response magic returned: ' . $ resp [ 'type' ] ) ; } $ return = array ( ) ; if ( $ resp [ 'len' ] > 0 ) { $ data = '' ; while ( self :: stringLength ( $ data ) < $ resp [ 'len' ] ) { $ data .= socket_read ( $ socket , $ resp [ 'len' ] - self :: stringLength ( $ data ) ) ; } $ d = explode ( "\x00" , $ data ) ; foreach ( self :: $ magic [ $ resp [ 'type' ] ] [ 1 ] as $ i => $ a ) { $ return [ $ a ] = $ d [ $ i ] ; } } $ function = self :: $ magic [ $ resp [ 'type' ] ] [ 0 ] ; if ( $ function == 'error' ) { if ( ! self :: stringLength ( $ return [ 'err_text' ] ) ) { $ return [ 'err_text' ] = 'Unknown error; see error code.' ; } throw new Exception ( $ return [ 'err_text' ] , $ return [ 'err_code' ] ) ; } return array ( 'function' => self :: $ magic [ $ resp [ 'type' ] ] [ 0 ] , 'type' => $ resp [ 'type' ] , 'data' => $ return , ) ; }
Read command from Gearman.

@param resource $socket The socket to read from

@see MHlavac\Gearman\Connection::$magic

@throws \MHlavac\Gearman\Exception connection issues or invalid responses

@return array Result read back from Gearman
Read command from Gearman .