当前位置:首页 > PHP教程 > php应用 > 列表

php获得网站访问统计信息类Compete API用法实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-20 16:54:36 浏览: 评论:0 

这篇文章主要介绍了php获得网站访问统计信息类Compete API用法,实例分析了php使用curl获取Compete统计网站信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下。

本文实例讲述了php获得网站访问统计信息类Compete API用法,分享给大家供大家参考,具体如下:

这里使用php获得网站访问统计信息类Compete API,Compete是一个专门用来统计网站信息的网站。

  1. <?php 
  2. // Check for dependencies 
  3. if (!function_exists('curl_init')) 
  4.  throw new Exception('Compete needs the CURL PHP extension.'); 
  5. if (!function_exists('json_decode')) 
  6.  throw new Exception('Compete needs the JSON PHP extension.'); 
  7. /** 
  8.  * Base Compete exception class. 
  9.  */ 
  10. class CompeteException extends Exception {} 
  11. /** 
  12.  * Represents Compete API. 
  13.  * @author Egor Gumenyuk (boo1ean0807 at gmail dot com) 
  14.  * @package Compete 
  15.  * @license Apache 2.0 
  16.  */ 
  17. class Compete 
  18.  /** 
  19.   * Default usr agent. 
  20.   */ 
  21.  const USER_AGENT  = 'Compete API wrapper for PHP'
  22.  /** 
  23.   * Base url for api calls. 
  24.   */ 
  25.  const API_BASE_URL = 'http://apps.compete.com/sites/:domain/trended/:metric/?apikey=:key'
  26.  /** 
  27.   * Masks for url params. 
  28.   */ 
  29.  private $_urlKeys = array(':domain'':metric'':key'); 
  30.  private $_apiKey
  31.  /** 
  32.   * For url cleaning. 
  33.   */ 
  34.  private $_toSearch = array('http://''www.'); 
  35.  private $_toReplace = array(''''); 
  36.  /** 
  37.   * List of available metrics. 
  38.   */ 
  39.  private $_availableMetrics = array
  40.        // Description   Auth type 
  41.   'uv',   // Unique Visitors Basic 
  42.   'vis',  // Visits      Basic 
  43.   'rank',  // Rank       Basic 
  44.   'pv',   // Page Views    All-Access 
  45.   'avgstay',// Average Stay   All-Access 
  46.   'vpp',  // Visits/Person  All-Access 
  47.   'ppv',  // Pages/Visit   All-Access 
  48.   'att',  // Attention    All-Access 
  49.   'reachd'// Daily Reach   All-Access 
  50.   'attd',  // Daily Attention All-Access 
  51.   'gen',  // Gender      All-Access 
  52.   'age',  // Age       All-Access 
  53.   'inc',  // Income      All-Access 
  54.  ); 
  55.  /** 
  56.   * List of available methods for __call() implementation. 
  57.   */ 
  58.  private $_metrics = array
  59.   'uniqueVisitors' => 'uv'
  60.   'visits'     => 'vis'
  61.   'rank'      => 'rank'
  62.   'pageViews'   => 'pv'
  63.   'averageStay'  => 'avgstay'
  64.   'visitsPerson'  => 'vpp'
  65.   'pagesVisit'   => 'ppv'
  66.   'attention'   => 'att'
  67.   'dailyReach'   => 'reachd'
  68.   'dailyAttention' => 'attd'
  69.   'gender'     => 'gen'
  70.   'age'      => 'age'
  71.   'income'     => 'inc' 
  72.  ); 
  73.  /** 
  74.   * Create access to Compete API. 
  75.   * @param string $apiKey user's api key. 
  76.   */ 
  77.  public function __construct($apiKey) { 
  78.   $this->_apiKey = $apiKey
  79.  } 
  80.  /** 
  81.   * Implement specific methods. 
  82.   */ 
  83.  public function __call($name$args) { 
  84.   if (array_key_exists($name$this->_metrics) && isset($args[0])) 
  85.    return $this->get($args[0], $this->_metrics[$name]); 
  86.   throw new CompeteException($name . ' method does not exist.'); 
  87.  } 
  88.  /** 
  89.   * Get data from Compete. 
  90.   * @param string $site some domain. 
  91.   * @param string $metric metric to get. 
  92.   * @return stdClass Compete data. 
  93.   * @throws CompeteException 
  94.   */ 
  95.  public function get($site$metric) { 
  96.   if (!in_array($metric$this->_availableMetrics)) 
  97.    throw new CompeteException($metric . ' - wrong metric.'); 
  98.   $values = array
  99.    $this->_prepareUrl($site), 
  100.    $metric
  101.    $this->_apiKey 
  102.   ); 
  103.   // Prepare call url 
  104.   $url = str_replace($this->_urlKeys, $values, self::API_BASE_URL); 
  105.   // Retrieve data using HTTP GET method. 
  106.   $data = json_decode($this->_get($url)); 
  107.   // Because of unsuccessful responses contain "status_message". 
  108.   if (!isset($data->status_message)) 
  109.    return $data
  110.   throw new CompeteException('Status: ' . $data->status . '. ' .$data->status_message); 
  111.  } 
  112.  /** 
  113.   * Cut unnecessary parts of url. 
  114.   * @param string $url some url. 
  115.   * @return string trimmed url. 
  116.   */ 
  117.  private function _prepareUrl($url) { 
  118.   return str_replace($this->_toSearch, $this->_toReplace, $url); 
  119.  } 
  120.  /** 
  121.   * Execute http get method. 
  122.   * @param string $url request url. 
  123.   * @return string response. 
  124.   */ 
  125.  private function _get($url) { 
  126.   $ch = curl_init(); 
  127.   curl_setopt($ch, CURLOPT_URL, $url); 
  128.   curl_setopt($ch, CURLOPT_USERAGENT, self::USER_AGENT); 
  129.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  130.   return curl_exec($ch); 
  131.  } 
  132. }

Tags: php网站访问统计 Compete

分享到: