文章教程

2.1统计在线人数

9/17/2020 9:43:31 PM 人评论 次浏览

2.1 统计在线人数

所有拥有自己的网站,特别是那些经营网站的朋友,需要随时了解具体网页的在线人数。因为这样不仅可以了解网页的受欢迎程度,还可以掌握具体网页的负荷程度。如果同时在线的人数太多的话,当然服务器的负担也会很大,这时候就应该特别注意此网页的性能了。

本节统计在线人数方法,是利用PHP强大的函数库,通过统计所有在线用户的IP地址来实现的,在线用户的信息将保存在文件中。与那些通过数据库实现的统计方法稍有不同。

alt

实例要点

1.取得IP地址

本节使用getenv('REMOTE_ADDR')来取得IP地址,getenv函数是取得系统的环境变量,REMOTE_ADDR从名字就表示要取得的是远程的IP地址。还有其他一些取得IP地址的方法,会在本节后的补充资料会有介绍。

2.保存在线用户信息

在线用户信息以如下的形式保存在文件中,第一项为IP地址,第二项为链接的时间(严格的说是期限),两项的中间以逗号间隔,一行的末尾以“#”结束。在线用户信息文件的内容如下:

128.0.54.1,1275481567#

197.0.34.1,1275481578#

……

目录结构

alt

实例代码

alt

count.txt为保存在线用户信息的文件。

alt

touch函数的作用是如果没有此文件,则创建它。

alt

30秒内没动作,认为掉线。

alt

读入文件内容,并以间隔符“#”来分离出所有字符串后,存储在数组$user_arr。

alt

$temp为放置所有用户信息的数组。

alt

8到13行对文件中存储的所有在线用户进行循环处理,非本用户保存到$temp数组中。

alt

如果不是本用户IP,并且时间没有超时则放入数组中temp中。

alt

保存本用户的信息(IP地址,以及链接期限时间)。

alt

以更新的形式打开文件count.txt,即不保存原来的内容。Fopen函数的第二个参数[w],表示以更新的形式打开文件。

alt

flock函数是锁定/释放锁定用的函数,第二参数为LOCK_EX时,锁定文件句柄;而当第二个参数为LOCK_UN时,释放锁定,从而保证同时只有一个用户在对文件进行写入动作。

alt

$temp数组中的元素个数就是在线人数。

alt

补充

取得IP地址的方法

在PHP浩大的函数库中除了上述的介绍使用getenv('REMOTE_ADDR')方法来取得远程IP地址外,还可以使用全局变量$_SERVER['REMOTE_ADDR']来取得远程IP地址。getenv('REMOTE_ADDR')函数在apache下能正常获取IP地址,而在IIS中,一点作用都没,而$_SERVER['REMOTE_ADDR']函数,既可在Apache中成功获取访客的IP地址,在IIS下也同样有效。

另外,还可以通过同一个getenv函数,使用完全不同的关键字来取得远程IP地址。分别为getenv("http_client_ip"),getenv("http_x_forwarded_for")。为确保万无一失的取得远程IP地址,可以使用下述取得远程ip地址的函数getip。

alt

逻辑非常简单,在此不再赘述了。其中strcasecmp为字符串比较函数,本书最后的附录中有此函数的介绍。

教程类别