本套代码由咔咔云站长独家开发,代码主要特性高性能,高并发,0文件,0数据库。
使用方法
可稍微修改为输出js,在网站底部调用显示在线人数!此文件在网站核心文件中引用即可。比如config.php,common.php,Ajax.php等.
调用格式
网址后面添加参数 ?type=number 输出json格式的总人数。
网址后面添加参数 ?type=json 输出json格式的在线IP列表和有效时长。
源码如下
<?php
/**
* 网站在线人数统计,0文件,0数据库,支持高并发,高效率。
* 作者:咔咔云QQ79087446,QQ群237682461
* 网址:www.kkjsz.cn 咔咔云Api:api.kkjsz.cn
* 转载请注明来源,谢谢。
*/
ini_set("display_errors", "Off");
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
extension_loaded('memcached') or die('memcached扩展未安装!');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:GET,POST');
header('Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept');
$onlinetime = 600; //在线有效时间(秒)
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
$mem = new Memcached();
$mem->addServer('127.0.0.1', '11211') or die('memcached连接失败!');
$line_user_list = $mem->get('on_line_user_list');
$line_user_list[$ip] = time();
foreach ($line_user_list as $lineuserip => $linetime) {
$outusertime[$lineuserip] = time()-$linetime;
if (time()-$linetime >= $onlinetime) {
unset($line_user_list[$lineuserip]);
} else {
$body .= $lineuserip.' => 剩余失效时间: '.($onlinetime-(time()-$linetime)).' 秒</br>';
}
}
$mem->set('on_line_user_list', $line_user_list, 0);
if ($_GET['type'] == 'number') {
echo json_encode(['value' => count($line_user_list)]);
exit;
}
if ($_GET['type'] == 'json') {
echo json_encode(['line_user_list' => $line_user_list, 'line_out_time' => $outusertime]);
exit;
}
?>
<h1>当前在线人数:<?php echo count($line_user_list); ?> 人</h1>访客刷新页面后重新计时!
<h2>在线列表:</h2>
<?php echo $body; ?>
本文首发于:https://www.kkjsz.cn/archives/336.html
本文共 206 个字数,平均阅读时长 ≈ 1分钟
评论 (0)