<?php
$filename = 'online.txt'; //資料檔案
$cookiename = 'VGOTCN_OnLineCount'; //cookie名稱
$onlinetime = 600; //線上有效時間,機關:秒 (即600等于10分鐘)
$online = file($filename);
$nowtime = time();
$nowonline = array();
foreach($online as $line) {
$row = explode('|',$line);
$sesstime = trim($row[1]);
if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效時間内,則資料繼續儲存,否則被放棄不再統計
$nowonline[$row[0]] = $sesstime; //擷取線上清單到數組,會話ID為鍵名,最後通信時間為鍵值
}
}
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);
}
}
echo 'document.write("'.$total_online.'");';
?>