php教程

超轻量级php框架startmvc

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

更新时间:2020-03-03 22:18:32 作者:startmvc
本文实例讲述了php获得网站访问统计信息类CompeteAPI用法。分享给大家供大家参考。具体如

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

这里使用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程序设计有所帮助。

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