首页 > 开发 > PHP > 正文

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

2024-05-04 23:33:48
字体:
来源:转载
供稿:网友

这篇文章主要介绍了php获得网站访问统计信息类Compete API用法,实例分析了php使用curl获取Compete统计网站信息的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php获得网站访问统计信息类Compete API用法。分享给大家供大家参考。具体如下:

这里使用php获得网站访问统计信息类Compete API,Compete是一个专门用来统计网站信息的网站

 

 
  1. <?php 
  2. // Check for dependencies 
  3. if (!function_exists('curl_init')) 
  4. throw new Exception('Compete needs the CURL PHP extension.'); 
  5. if (!function_exists('json_decode')) 
  6. throw new Exception('Compete needs the JSON PHP extension.'); 
  7. /** 
  8. * Base Compete exception class. 
  9. */ 
  10. class CompeteException extends Exception {} 
  11. /** 
  12. * Represents Compete API. 
  13. * @author Egor Gumenyuk (boo1ean0807 at gmail dot com) 
  14. * @package Compete 
  15. * @license Apache 2.0 
  16. */ 
  17. class Compete 
  18. /** 
  19. * Default usr agent. 
  20. */ 
  21. const USER_AGENT = 'Compete API wrapper for PHP'
  22. /** 
  23. * Base url for api calls. 
  24. */ 
  25. const API_BASE_URL = 'http://apps.compete.com/sites/:domain/trended/:metric/?apikey=:key'
  26. /** 
  27. * Masks for url params. 
  28. */ 
  29. private $_urlKeys = array(':domain'':metric'':key'); 
  30. private $_apiKey
  31. /** 
  32. * For url cleaning. 
  33. */ 
  34. private $_toSearch = array('http://''www.'); 
  35. private $_toReplace = array(''''); 
  36. /** 
  37. * List of available metrics. 
  38. */ 
  39. private $_availableMetrics = array
  40. // Description Auth type 
  41. 'uv'// Unique Visitors Basic 
  42. 'vis'// Visits Basic 
  43. 'rank'// Rank Basic 
  44. 'pv'// Page Views All-Access 
  45. 'avgstay',// Average Stay All-Access 
  46. 'vpp'// Visits/Person All-Access 
  47. 'ppv'// Pages/Visit All-Access 
  48. 'att'// Attention All-Access 
  49. 'reachd'// Daily Reach All-Access 
  50. 'attd'// Daily Attention All-Access 
  51. 'gen'// Gender All-Access 
  52. 'age'// Age All-Access 
  53. 'inc'// Income All-Access 
  54. ); 
  55. /** 
  56. * List of available methods for __call() implementation. 
  57. */ 
  58. private $_metrics = array
  59. 'uniqueVisitors' => 'uv'
  60. 'visits' => 'vis'
  61. 'rank' => 'rank'
  62. 'pageViews' => 'pv'
  63. 'averageStay' => 'avgstay'
  64. 'visitsPerson' => 'vpp'
  65. 'pagesVisit' => 'ppv'
  66. 'attention' => 'att'
  67. 'dailyReach' => 'reachd'
  68. 'dailyAttention' => 'attd'
  69. 'gender' => 'gen'
  70. 'age' => 'age'
  71. 'income' => 'inc' 
  72. ); 
  73. /** 
  74. * Create access to Compete API. 
  75. * @param string $apiKey user's api key. 
  76. */ 
  77. public function __construct($apiKey) { 
  78. $this->_apiKey = $apiKey
  79. /** 
  80. * Implement specific methods. 
  81. */ 
  82. public function __call($name$args) { 
  83. if (array_key_exists($name$this->_metrics) && isset($args[0])) 
  84. return $this->get($args[0], $this->_metrics[$name]); 
  85. throw new CompeteException($name . ' method does not exist.'); 
  86. /** 
  87. * Get data from Compete. 
  88. * @param string $site some domain. 
  89. * @param string $metric metric to get. 
  90. * @return stdClass Compete data. 
  91. * @throws CompeteException 
  92. */ 
  93. public function get($site$metric) { 
  94. if (!in_array($metric$this->_availableMetrics)) 
  95. throw new CompeteException($metric . ' - wrong metric.'); 
  96. $values = array
  97. $this->_prepareUrl($site), 
  98. $metric
  99. $this->_apiKey 
  100. ); 
  101. // Prepare call url 
  102. $url = str_replace($this->_urlKeys, $values, self::API_BASE_URL); 
  103. // Retrieve data using HTTP GET method. 
  104. $data = json_decode($this->_get($url)); 
  105. // Because of unsuccessful responses contain "status_message". 
  106. if (!isset($data->status_message)) 
  107. return $data
  108. throw new CompeteException('Status: ' . $data->status . '. ' .$data->status_message); 
  109. /** 
  110. * Cut unnecessary parts of url. 
  111. * @param string $url some url. 
  112. * @return string trimmed url. 
  113. */ 
  114. private function _prepareUrl($url) { 
  115. return str_replace($this->_toSearch, $this->_toReplace, $url); 
  116. /** 
  117. * Execute http get method. 
  118. * @param string $url request url. 
  119. * @return string response. 
  120. */ 
  121. private function _get($url) { 
  122. $ch = curl_init(); 
  123. curl_setopt($ch, CURLOPT_URL, $url); 
  124. curl_setopt($ch, CURLOPT_USERAGENT, self::USER_AGENT); 
  125. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  126. return curl_exec($ch); 

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表