• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

php获得网站访问统计信息的类Compete API

PHP 水墨上仙 2542次浏览

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

<?php
// Check for dependencies
if (!function_exists('curl_init'))
  throw new Exception('Compete needs the CURL PHP extension.');
if (!function_exists('json_decode'))
  throw new Exception('Compete needs the JSON PHP extension.');
/**
 * Base Compete exception class.
 */
class CompeteException extends Exception {}
/**
 * Represents Compete API.
 * @author Egor Gumenyuk (boo1ean0807 at gmail dot com)
 * @package Compete
 * @license Apache 2.0
 */
class Compete
{
  /**
   * Default usr agent.
   */
  const USER_AGENT   = 'Compete API wrapper for PHP';
  /**
   * Base url for api calls.
   */
  const API_BASE_URL = 'http://apps.compete.com/sites/:domain/trended/:metric/?apikey=:key';
  /**
   * Masks for url params.
   */
  private $_urlKeys = array(':domain', ':metric', ':key');
  private $_apiKey;
  /**
   * For url cleaning.
   */
  private $_toSearch  = array('http://', 'www.');
  private $_toReplace = array('', '');
  /**
   * List of available metrics.
   */
  private $_availableMetrics = array(
              // Description      Auth type
    'uv',     // Unique Visitors  Basic
    'vis',    // Visits           Basic
    'rank',   // Rank             Basic
    'pv',     // Page Views       All-Access
    'avgstay',// Average Stay     All-Access
    'vpp',    // Visits/Person    All-Access
    'ppv',    // Pages/Visit      All-Access
    'att',    // Attention        All-Access
    'reachd', // Daily Reach      All-Access
    'attd',   // Daily Attention  All-Access
    'gen',    // Gender           All-Access
    'age',    // Age              All-Access
    'inc',    // Income           All-Access
  );
  /**
   * List of available methods for __call() implementation.
   */
  private $_metrics = array(
    'uniqueVisitors' => 'uv',
    'visits'         => 'vis',
    'rank'           => 'rank',
    'pageViews'      => 'pv',
    'averageStay'    => 'avgstay',
    'visitsPerson'   => 'vpp',
    'pagesVisit'     => 'ppv',
    'attention'      => 'att',
    'dailyReach'     => 'reachd',
    'dailyAttention' => 'attd',
    'gender'         => 'gen',
    'age'            => 'age',
    'income'         => 'inc'
  );
  /**
   * Create access to Compete API.
   * @param string $apiKey user's api key.
   */
  public function __construct($apiKey) {
    $this->_apiKey = $apiKey;
  }
  /**
   * Implement specific methods.
   */
  public function __call($name, $args) {
    if (array_key_exists($name, $this->_metrics) && isset($args[0]))
      return $this->get($args[0], $this->_metrics[$name]);
    throw new CompeteException($name . ' method does not exist.');
  }
  /**
   * Get data from Compete.
   * @param string $site some domain.
   * @param string $metric metric to get.
   * @return stdClass Compete data.
   * @throws CompeteException
   */
  public function get($site, $metric) {
    if (!in_array($metric, $this->_availableMetrics))
      throw new CompeteException($metric . ' - wrong metric.');
    $values = array(
      $this->_prepareUrl($site),
      $metric,
      $this->_apiKey
    );
    // Prepare call url
    $url = str_replace($this->_urlKeys, $values, self::API_BASE_URL);
    // Retrieve data using HTTP GET method.
    $data = json_decode($this->_get($url));
    // Because of unsuccessful responses contain "status_message".
    if (!isset($data->status_message))
      return $data;
    throw new CompeteException('Status: ' . $data->status . '. ' .$data->status_message);
  }
  /**
   * Cut unnecessary parts of url.
   * @param string $url some url.
   * @return string trimmed url.
   */
  private function _prepareUrl($url) {
    return str_replace($this->_toSearch, $this->_toReplace, $url);
  }
  /**
   * Execute http get method.
   * @param string $url request url.
   * @return string response.
   */
  private function _get($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            $url);
    curl_setopt($ch, CURLOPT_USERAGENT,      self::USER_AGENT);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    return curl_exec($ch);
  }
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明php获得网站访问统计信息的类Compete API
喜欢 (0)
加载中……