php实现统计网站在线人数的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-26 16:34:24 浏览: 评论:0
这篇文章主要介绍了php实现统计网站在线人数的方法,通过获取服务器端网络参数及文本文件读写实现统计在线人数的功能,非常简单实用,需要的朋友可以参考下,本文实例讲述了php实现统计网站在线人数的方法,分享给大家供大家参考,具体实现方法如下:
- <?php
- function getIpAddress() { // 取得当前用户的IP地址
- if (getenv('HTTP_CLIENT_IP')) {
- $ip = getenv('HTTP_CLIENT_IP');
- } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
- $ip = getenv('HTTP_X_FORWARDED_FOR');
- } elseif (getenv('REMOTE_ADDR')) {
- $ip = getenv('REMOTE_ADDR');
- } else {
- $ip = $_SERVER['REMOE_ADDR'];
- }
- return $ip;
- }
- function writeover($filename,$data,$method = 'w',$chmod = 0){
- $handle = fopen($filename, $method);
- !handle && die("文件打开失败");
- flock($handle, LOCK_EX);
- fwrite($handle, $data);
- flock($handle, LOCK_UN);
- fclose($handle);
- $chmod && @chmod($filename, 0777);
- }
- function count_online_num($time, $ip) {
- $fileCount = './count.txt';
- $count = 0;
- $gap = 900; //15分钟不刷新页面就
- if (!file_exists($fileCount)) {
- $str = $time . "\t" . $ip . "\r\n";
- writeover($fileCount, $str, 'w', 1);
- $count = 1;
- } else {
- $arr = file($fileCount);
- $flag = 0;
- foreach($arr as $key => $val) {
- $val= trim($val);
- if ($val != "") {
- list($when, $seti) = explode("\t", $val);
- if ($seti ==$ip) {
- $arr[$key] = $time . "\t" . $seti;
- $flag = 1;
- } else {
- $currentTime = time();
- if ($currentTime - $when > 900) {
- unset($arr[$key]);
- }else{
- $arr[$key]=$val;
- }
- }
- }
- }
- if ($flag == 0) {
- array_push($arr, $time . "\t" . $ip);
- }
- $count = count($arr);
- $str = implode("\r\n", $arr);
- $str.="\r\n";
- writeover($fileCount, $str, 'w', 0);
- unset($arr);
- }
- return $count;
- }
- $time = time();
- $ip = getIpAddress();
- $online_num = count_online_num($time,$ip);
- echo $online_num;
- ?>
Tags: php网站在线人数
- 上一篇:PHP输出一个等腰三角形的方法
- 下一篇:php解析xml方法实例详解
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)