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
PHP采集腾讯微博的实现代码
Jan 19 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
php验证码实现代码(3种)
Sep 07 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
PHP如何解决微信文章图片防盗链
Dec 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
星际争霸中的热键
2020/03/04 星际争霸
索尼ICF-SW100收音机评测
2021/03/02 无线电
php 什么是PEAR?(第二篇)
2009/03/19 PHP
php数组去重实例及分析
2013/11/26 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
Numpy掩码式数组详解
2018/04/17 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Django中的Model操作表的实现
2018/07/24 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python 实现波浪滤镜特效
2020/12/02 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
学习自我鉴定
2014/02/01 职场文书
詹天佑教学反思
2014/04/30 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
聘任通知书
2015/09/21 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
python实现简单的名片管理系统
2021/04/26 Python
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记