original_string: 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, );
      }
code: 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, );
      }
code_tokens: 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 , ) ; }
docstring: 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
docstring_tokens: Read command from Gearman .