本文实例讲述了php实现统计网站在线人数的方法。分享给大家供大家参考。具体实现方法如下:
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
66
|
<?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 ; ?> |
希望本文所述对大家的php程序设计有所帮助。