首页 > 开发 > PHP > 正文

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

2024-05-04 22:37:55
字体:
来源:转载
供稿:网友

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

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

<?php// Check for dependenciesif (!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); }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表