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


Posted in PHP onApril 02, 2015

本文实例讲述了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 相关文章推荐
PHP 高手之路(一)
Oct 09 PHP
sphinx增量索引的一个问题
Jun 14 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP实现微信申请退款功能
Oct 01 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
php实现从上传文件创建缩略图的方法
Apr 02 #PHP
php调用KyotoTycoon简单实例
Apr 02 #PHP
PHP中数据类型转换的三种方式
Apr 02 #PHP
php在apache环境下实现gzip配置方法
Apr 02 #PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 #PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 #PHP
php中实现获取随机数组列表的自定义函数
Apr 02 #PHP
You might like
PHP 万年历实现代码
2012/10/18 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
Gird事件机制初级读本
2007/03/10 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
Python常用内置函数总结
2015/02/08 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
使用python接入微信聊天机器人
2020/03/31 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
phpquery中文手册
2021/03/18 PHP
商务日语毕业生自荐信
2013/11/23 职场文书
syb养殖创业计划书
2014/01/09 职场文书
科研课题实施方案
2014/03/18 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
2014年物流工作总结
2014/11/25 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
导游词之丽江普济寺
2019/10/22 职场文书