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 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
PHP类的封装与继承详解
Sep 29 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
php简单压缩css样式示例
Sep 22 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 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
长波知识介绍
2021/03/01 无线电
php中的登陆login
2007/01/18 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
php验证码生成器
2017/05/24 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
小程序实现多选框功能
2018/10/30 Javascript
python中的错误处理
2016/04/10 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python实现事件驱动
2018/11/21 Python
python opencv调用笔记本摄像头
2019/08/28 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
python中xlutils库用法浅析
2020/12/29 Python
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
如何写一份好的自荐信
2014/01/02 职场文书
会计学专业求职信
2014/07/17 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
大学生社会实践感想
2015/08/11 职场文书
信息技术研修心得体会
2016/01/08 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python
nginx中proxy_pass各种用法详解
2021/11/07 Servers
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记