parseHeader() static public method

头部解析
static public parseHeader ( $data ) : array
$data
return array
コード例 #1
0
ファイル: WebAdapter.php プロジェクト: vzina/esaywork
 protected function checkHeader($client_id, $http_data)
 {
     //新的连接
     if (!isset($this->requests[$client_id])) {
         if (!empty($this->buffer_header[$client_id])) {
             $http_data = $this->buffer_header[$client_id] . $http_data;
         }
         //HTTP结束符
         $ret = strpos($http_data, self::HTTP_EOF);
         //没有找到EOF,继续等待数据
         if ($ret === false) {
             return false;
         } else {
             $this->buffer_header[$client_id] = '';
             $request = new Request();
             //GET没有body
             list($header, $request->body) = explode(self::HTTP_EOF, $http_data, 2);
             $request->head = $this->parser->parseHeader($header);
             //使用head[0]保存额外的信息
             $request->meta = $request->head[0];
             unset($request->head[0]);
             //保存请求
             $this->requests[$client_id] = $request;
             //解析失败
             if ($request->head == false) {
                 $this->log("parseHeader failed. header=" . $header);
                 return false;
             }
         }
     } else {
         $request = $this->requests[$client_id];
         $request->body .= $http_data;
     }
     return $request;
 }
コード例 #2
0
ファイル: WebSocket.php プロジェクト: kilmas/framework
 /**
  * 握手
  * @param $headerBuffer
  * @return bool
  */
 function doHandShake($headerBuffer)
 {
     $header = Swoole\Http\Parser::parseHeader($headerBuffer);
     if (!isset($header['Sec-WebSocket-Accept'])) {
         $this->disconnect();
         return false;
     }
     if ($header['Sec-WebSocket-Accept'] != base64_encode(pack('H*', sha1($this->key . self::GUID)))) {
         $this->disconnect();
         return false;
     }
     $this->handshake = true;
     $this->header = $header;
     return true;
 }