|
/**
* 概率计算
* @param array('a'=>0.5, 'b'=>0.2)
* @return string (key of array, eg. 'a' or 'b')
*/
function random($ps) {
$arr = array();
$key = md5(serialize($ps));
if(!isset($arr[$key])) {
$max = array_sum($ps);
foreach($ps as $k => $v) {
$v = $v / $max * 10000;
for($i=0; $i<$v; $i++) {
$arr[$key][] = $k;
}
}
}
return $arr[$key][mt_rand(0, count($arr[$key])-1)];
}
/**
* 返回毫秒数
*
* @return float
*/
function microtime_float() {
list($a, $b) = explode(' ', microtime());
return ((float)$a + (float)$b) * 1000;
}
/**
* 取得客户端IP
*/
function get_client_ip(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
... |
|
|