用PHP 实现线上人数统计

基于HTTP 协定的限制,要实现统计线上人数会很困难。 而现时大部份网站或论坛所使用的方法是,统计在过去某段时间内有所活动的访客,便计算为线上人数,本文会介绍使用PHP + MySQL 制作一个线上人数计数器。

建站公司在开始前请先确定网页伺服器支援PHP 4.3.x,以及有一个可用的MySQL 资料库,如果没有MySQL 资料库,请向你的系统管理员或网页寄存供应商查询。

建立资料库

第一步需要先建立一个MySQL 资料表,可以在文字模式或phpmyadmin 下执行以下SQL 语句:

01 CREATE TABLE `online_counter`(
02 `hash` varchar(50) not null,
03 `remote_addr` varchar(20) not null,
04 `time` int(10) not null)



PHP 程式码

当建立以上资料表后,便可以编写PHP 程式了,以下例子假设你的MySQL 登入资料如下:

Host: localhost
username: dbuser
password: dbpasswd
database: dbname

请注意,在使用以下程式码时,请根据你的实际需要修改MySQL 登入资料:

01 <?php
02
// create mysql connection
03
$db_conn = mysql_connect ( "localhost" , "dbuser" , "dbpasswd" );
04
mysql_select_db ( "dbname" , $db_conn );
05
06
// check and make hash string
07
if(!isset( $_SESSION [ "hash" ])){
08
$hash = md5 ( time ());
09
session_register ( "hash" );
10
$_SESSION [ "hash" ] = $hash ;
11 }
12
13
// update database
14
$time = time ();
15
$query = mysql_query ( "select hash from `online_counter` where hash='" . $_SESSION [ "hash" ]. "'" );
16 if(
$rows = mysql_fetch_row ( $query )){
17
mysql_query ( "update `online_counter` set `time`='" . $time . "' where hash='" . $_SESSION [ "hash" ]. "'" );
18 }else{
19
mysql_query ( "insert into `online_counter` values('" . $_SESSION [ "hash" ]. "', '" . $_SERVER [ "REMOTE_ADDR" ]. "', '" . $time . "')" );
20 }
21
22
// get online users
23
$counter_time = $time - 600 ; // 10 mins
24
$online_query = mysql_query ( "select count(*) as total from `online_counter` where `time` > '" . $counter_time . "'" );
25
$online_counter = mysql_fetch_array ( $online_query );
26
27
// delete old record
28
mysql_query ( "delete from `online_counter` where `time` < '" . $counter_time . "'" );
29
?>



在以上例子,$online_counter['total'] 就是在过去10 分钟内在网站有活动的人数。

转载于:https://www.cnblogs.com/phpdev88/archive/2012/05/11/2495441.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值