博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

计算网站在线人数

Posted on 2013-05-24 15:43  losen  阅读(243)  评论(0编辑  收藏  举报

<?php

$user_online = "count.txt"; //保存人数的文件
touch($user_online); //如果没有此文件,则创建
$timeout = 300; //30秒内没动作者,认为掉线
$user_arr = file_get_contents($user_online);
$user_arr = explode('#', rtrim($user_arr, '#'));
//print_r($user_arr);
$temp = array();
foreach ($user_arr as $value) {
    $user = explode(",", trim($value));
    if (($user[0] != getenv('REMOTE_ADDR')) && ($user[1] > time())) { //如果不是本用户IP并时间没有超时则放入到数组中
        array_push($temp, $user[0] . "," . $user[1]);
    }
}
array_push($temp, getenv('REMOTE_ADDR') . "," . (time() + ($timeout)) . '#'); //保存本用户的信息
$user_arr = implode("#", $temp);
//写入文件
$fp = fopen($user_online, "w");
flock($fp, LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs($fp, $user_arr);
flock($fp, LOCK_UN);
fclose($fp);
$online = count($temp);