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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
PHP实现文件上传功能实例代码
May 18 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
php 中的信号处理操作实例详解
Mar 04 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 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下删除字符串中HTML标签的函数
2008/08/27 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
Python 函数基础知识汇总
2018/03/09 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
python装饰器代码深入讲解
2021/03/01 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
大学新闻系自荐书
2014/05/31 职场文书
接收函格式
2015/01/30 职场文书
初二数学教学反思
2016/02/17 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB