Created
March 25, 2014 18:45
-
-
Save mca-gif/9768471 to your computer and use it in GitHub Desktop.
StatHat Class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// An simplified version of StatHat's own PHP code, wrapped in a class, with a lower timeout threshold. | |
class StatHat { | |
private static function ez_key() { | |
return "Your_StatHat_Key_Here" | |
//return $_SERVER['STATHAT_KEY']; | |
} | |
// StatHat's original code is very much _not_ asynchronous. | |
// In the event of DNS issues, this will lock your app for TIMEOUT seconds. | |
// It is set to 2 seconds, if you have frequent problems with timeouts, up the timeout, or fix your DNS :) | |
private static function do_async_post_request($url, $params) | |
{ | |
foreach ($params as $key => &$val) { | |
if (is_array($val)) $val = implode(',', $val); | |
$post_params[] = $key.'='.urlencode($val); | |
} | |
$post_string = implode('&', $post_params); | |
$parts=parse_url($url); | |
// Lower threshold prevents lockup in the event of DNS issues. | |
$fp = fsockopen($parts['host'], | |
isset($parts['port'])?$parts['port']:80, | |
$errno, $errstr, 2); | |
$out = "POST ".$parts['path']." HTTP/1.1\r\n"; | |
$out.= "Host: ".$parts['host']."\r\n"; | |
$out.= "Content-Type: application/x-www-form-urlencoded\r\n"; | |
$out.= "Content-Length: ".strlen($post_string)."\r\n"; | |
$out.= "Connection: Close\r\n\r\n"; | |
if (isset($post_string)) $out.= $post_string; | |
fwrite($fp, $out); | |
fclose($fp); | |
} | |
public static function ez_count($stat_name, $count) | |
{ | |
self::do_async_post_request("http://api.stathat.com/ez", array('email' => self::ez_key(), 'stat' => $stat_name, 'count' => $count)); | |
} | |
public static function ez_value($stat_name, $value) | |
{ | |
self::do_async_post_request("http://api.stathat.com/ez", array('email' => self::ez_key(), 'stat' => $stat_name, 'value' => $value)); | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment