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往windows中添加用户
Dec 06 PHP
求PHP数组最大值,最小值的代码
Oct 31 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP中的日期时间处理利器实例(Carbon)
Jun 09 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
PHP正则表达式笔记与实例详解
May 09 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采集相关教程之一 CURL函数库
2010/02/15 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
python分析网页上所有超链接的方法
2015/05/08 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
mac系统安装Python3初体验
2018/01/02 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Python的几种主动结束程序方式
2019/11/22 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
前厅部经理岗位职责范文
2014/02/04 职场文书
本科应届生求职信
2014/08/05 职场文书
保险内勤岗位职责
2015/04/13 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
2015年卫生局工作总结
2015/07/24 职场文书