Heim > php教程 > PHP开发 > Beispiel für die Verwendung des SAE-Echtzeitprotokollschnittstellen-SDK

Beispiel für die Verwendung des SAE-Echtzeitprotokollschnittstellen-SDK

高洛峰
Freigeben: 2016-12-20 16:08:51
Original
1110 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Verwendung des SAE-Echtzeitprotokollschnittstellen-SDK. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Sina SAE ist die erste inländische öffentliche Cloud-Plattform, die vom Sina R&D Center entwickelt wurde. Sie ist seit 2009 immer ausgereifter geworden und hat viele Schnittstellen geöffnet und Dienstanbieter. Wird von Entwicklern verwendet. Um Entwicklern das Debuggen und Analysieren zu erleichtern, hat SAE dieses Mal eine neue Echtzeit-Protokollabfrageschnittstelle hinzugefügt. Zukünftig können Sie Protokollinformationen über die API filtern und die erforderlichen Echtzeitprotokolle herunterladen. Allerdings stellt Sina SAE offiziell nur die Python-Implementierung bereit.

class SaeApiHandler{
  /**
  *  定义accessKey
  */
  private $accessKey;
  /**
  *  定义secretKey
  */
  private $secretKey;
  /**
  *  定义时间戳
  */
  private $timestamp;
  /**
  *  构造函数
  */
  public function __construct($key,$sec){
    $this->accessKey = $key;
    $this->secretKey = $sec;
    $this->timestamp = time();
  }
  /**
  *  重载get方法
  */
  public function __call($name,$arg){
    $ret = array();
    if (is_array($arg[0])) {
      $len = count($arg);
      for ($i=0; $i < $len; $i++) {
        $ret[$i] = $arg[$i][&#39;fop&#39;] ? $this->$name($arg[$i][&#39;service&#39;],$arg[$i][&#39;date&#39;],$arg[$i][&#39;ident&#39;],$arg[$i][&#39;fop&#39;]):$this->$name($arg[$i][&#39;service&#39;],$arg[$i][&#39;date&#39;],$arg[$i][&#39;ident&#39;]);
      }
    }else{
      $ret = $arg[3] ? $this->$name($arg[0],$arg[1],$arg[2],$arg[3]) : $this->get($arg[0],$arg[1],$arg[2]);
    }
    return $ret;
  }
  /**
  *  获取日志
  *  @param string 需要的日志
  *  @param string 时间
  *  @param string 日志类型
  *  @param string 过滤符
  *  @return array
  */
  private function getLog($service,$date,$ident,$fop=null){
    if ($fop) {
      $uri = &#39;/log/&#39;.$service.&#39;/&#39;.$date.&#39;/&#39;.$_SERVER[&#39;HTTP_APPVERSION&#39;].&#39;-&#39;.$ident.&#39;.log?&#39;.$fop;
    }else{
      $uri = &#39;/log/&#39;.$service.&#39;/&#39;.$date.&#39;/&#39;.$_SERVER[&#39;HTTP_APPVERSION&#39;].&#39;-&#39;.$ident.&#39;.log&#39;;
    }
    $ret = explode(PHP_EOL,$this->get($uri));
    array_splice($ret,0,7);
    array_pop($ret);
    return $ret;
  }
  private function get($uri){
    $host = &#39;http://g.sae.sina.com.cn&#39;.$uri;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$host);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $this->saeHeader($uri));
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $ret = curl_exec($ch);
    curl_close($ch);
    return $ret;
  }
  /**
  *  SAE请求头
  *  @return array
  */
  private function saeHeader($uri){
    return array(
        &#39;Host: g.sae.sina.com.cn&#39;,
        &#39;Accept: text/plain&#39;,
        &#39;x-sae-accesskey: &#39;.$this->accessKey,
        &#39;x-sae-timestamp: &#39;.$this->timestamp,
        &#39;Authorization: &#39;. $this->getAuthorization($uri)
      );
  }
  /**
  *  获取gAuthorization
  */
  private function getAuthorization($uri){
    $header = array(
        &#39;x-sae-timestamp&#39; => $this->timestamp,
        &#39;x-sae-accesskey&#39; => strtolower($this->accessKey)
      );
    ksort($header);
    $sae_header = array(&#39;GET&#39;,$uri);
    foreach ($header as $key => $value) {
      $sae_header[count($sae_header)] = $key.&#39;:&#39;.$value;
    }
    $ret = implode(PHP_EOL, $sae_header);
    $auth = &#39;SAEV1_HMAC_SHA256 &#39;.base64_encode(hash_hmac(&#39;sha256&#39;,$ret,$this->secretKey,true));
    return $auth;
  }
}
Nach dem Login kopieren

Es ist auch sehr einfach, die Klasse SaeApiHandler zu verwenden. Verfahren. Diese Methode kann Array-Parameter oder Zeichenfolgen übergeben. Weitere Informationen finden Sie in der SAE-Dokumentation. Wenn Sie mehrere Protokollsätze zurückgeben müssen, übergeben Sie einfach mehrere Arrays.

$test = new SaeApiHandler(SAE_ACCESSKEY,SAE_SECRETKEY);
$arr1 = array(
  &#39;service&#39;=>&#39;http&#39;,
  &#39;date&#39;=>&#39;2015-07-03&#39;,
  &#39;ident&#39;=>&#39;access&#39;,
  &#39;fop&#39;=>&#39;head/1/5&#39;
  );
$arr2 = array(
  &#39;service&#39;=>&#39;http&#39;,
  &#39;date&#39;=>&#39;2015-07-03&#39;,
  &#39;ident&#39;=>&#39;access&#39;,
  &#39;fop&#39;=>&#39;head/1/5&#39;
  );
$ret = $test->getLog($arr1,$arr2);
var_dump($ret);
Nach dem Login kopieren

Ich hoffe, dass dieser Artikel für alle, die sich mit PHP-Programmierung befassen, hilfreich sein wird.

Weitere Anwendungsbeispiele für das SAE-Echtzeitprotokollschnittstellen-SDK und verwandte Artikel finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage