1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
<?php
/*
@ PHP 在线人数统计程序
Copyright (c) by Pader 1:25 2009年1月7日
How to use it: <script src="online.php"></script>
note: 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确
例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样
如果同一个局域网的无论多少人人访问你的网站则只被认为是一个人
这个小巧的程序解决了此问题,它以电脑为单为,每台电脑便算一个访问者
当然因为使用的是COOKIE,如果你在同一台电脑上使用两种不同核心的浏览器访问那就别当别论了
*/
$filename = 'online.txt' ; //数据文件,如果没有新建
$cookiename = 'VGOTCN_OnLineCount' ; //cookie名称
$onlinetime = 600; //在线有效时间,单位:秒 (即600等于10分钟)
@ $online = file( $filename ); //数据文件,如果没有新建
$nowtime = time();
$nowonline = array ();
/*
@ 得到仍然有效的数据
*/
if (! empty ( $online )){
foreach ( $online as $line ) {
$row = explode ( '|' , $line );
$sesstime = trim( $row [1]);
if (( $nowtime - $sesstime ) <= $onlinetime ) { //如果仍在有效时间内,则数据继续保存,否则被放弃不再统计
$nowonline [ $row [0]] = $sesstime ; //获取在线列表到数组,会话ID为键名,最后通信时间为键值
}
}
}
/*
@ 创建访问者通信状态
使用cookie通信
COOKIE 将在关闭浏览器时失效,但如果不关闭浏览器,此 COOKIE 将一直有效,直到程序设置的在线时间超时
*/
if (isset( $_COOKIE [ $cookiename ])) { //如果有COOKIE即并非初次访问则不添加人数并更新通信时间
$uid = $_COOKIE [ $cookiename ];
} else { //如果没有COOKIE即是初次访问
$vid = 0; //初始化访问者ID
do { //给用户一个新ID
$vid ++;
$uid = 'U' . $vid ;
} while ( array_key_exists ( $uid , $nowonline ));
setcookie( $cookiename , $uid );
}
$nowonline [ $uid ] = $nowtime ; //更新现在的时间状态
/*
@ 统计现在在线人数
*/
$total_online = count ( $nowonline );
/*
@ 写入数据
*/
if ( $fp = @ fopen ( $filename , 'w' )) {
if ( flock ( $fp ,LOCK_EX)) {
rewind ( $fp );
foreach ( $nowonline as $fuid => $ftime ) {
$fline = $fuid . '|' . $ftime . "\n" ;
@ fputs ( $fp , $fline );
}
flock ( $fp ,LOCK_UN);
fclose( $fp );
|
相关文章
- 我应该使用PHP将CSS和JavaScript文件导入我的页面吗?
- PHP读取文件函数fread,fgets,fgetc,file_get_contents和file函数的使用总结
- PHP7语法知识(四):目录文件操作、Cookie与Session、MySQL数据库的使用、Redis数据库、PHP处理XML与JSON
- 如何使用PHP生成给定日期范围和时间的.ics文件
- php使用Session和文件统计在线人数
- php7 使用opcache把编译后的php文件存储为文件,实现php源码保护和脚本加速
- php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
- php同时使用session和cookie来保存用户登录信息
- php.ini文件中关于cookie和session的设置
- php使用glob函数遍历文件和目录详解