php使用Session和文件統(tǒng)計(jì)在線人數(shù)
更新時(shí)間:2015年07月04日 11:06:40 投稿:junjie
這篇文章主要介紹了php使用Session和文件統(tǒng)計(jì)在線人數(shù),本文直接給出實(shí)例代碼,需要的朋友可以參考下
<?php
/*
@ PHP 在線人數(shù)統(tǒng)計(jì)程序
Copyright (c) by Pader 1:25 2009年1月7日
How to use it: <script src="online.php"></script>
note: 一般獨(dú)立在線人數(shù)統(tǒng)計(jì)程序都是統(tǒng)計(jì)在線的IP數(shù),而這并不準(zhǔn)確
例如局域網(wǎng)的訪問(wèn)者,比如公司,學(xué)校機(jī)房和網(wǎng)吧,雖然內(nèi)網(wǎng)IP不同,但是外網(wǎng)IP都是一樣
如果同一個(gè)局域網(wǎng)的無(wú)論多少人人訪問(wèn)你的網(wǎng)站則只被認(rèn)為是一個(gè)人
這個(gè)小巧的程序解決了此問(wèn)題,它以電腦為單為,每臺(tái)電腦便算一個(gè)訪問(wèn)者
當(dāng)然因?yàn)槭褂玫氖荂OOKIE,如果你在同一臺(tái)電腦上使用兩種不同核心的瀏覽器訪問(wèn)那就別當(dāng)別論了
*/
$filename = 'online.txt'; //數(shù)據(jù)文件,如果沒(méi)有新建
$cookiename = 'VGOTCN_OnLineCount'; //cookie名稱
$onlinetime = 600; //在線有效時(shí)間,單位:秒 (即600等于10分鐘)
@$online = file($filename); //數(shù)據(jù)文件,如果沒(méi)有新建
$nowtime = time();
$nowonline = array();
/*
@ 得到仍然有效的數(shù)據(jù)
*/
if(!empty($online)){
foreach($online as $line) {
$row = explode('|',$line);
$sesstime = trim($row[1]);
if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效時(shí)間內(nèi),則數(shù)據(jù)繼續(xù)保存,否則被放棄不再統(tǒng)計(jì)
$nowonline[$row[0]] = $sesstime; //獲取在線列表到數(shù)組,會(huì)話ID為鍵名,最后通信時(shí)間為鍵值
}
}
}
/*
@ 創(chuàng)建訪問(wèn)者通信狀態(tài)
使用cookie通信
COOKIE 將在關(guān)閉瀏覽器時(shí)失效,但如果不關(guān)閉瀏覽器,此 COOKIE 將一直有效,直到程序設(shè)置的在線時(shí)間超時(shí)
*/
if(isset($_COOKIE[$cookiename])) { //如果有COOKIE即并非初次訪問(wèn)則不添加人數(shù)并更新通信時(shí)間
$uid = $_COOKIE[$cookiename];
} else { //如果沒(méi)有COOKIE即是初次訪問(wèn)
$vid = 0; //初始化訪問(wèn)者ID
do { //給用戶一個(gè)新ID
$vid++;
$uid = 'U'.$vid;
} while (array_key_exists($uid,$nowonline));
setcookie($cookiename,$uid);
}
$nowonline[$uid] = $nowtime; //更新現(xiàn)在的時(shí)間狀態(tài)
/*
@ 統(tǒng)計(jì)現(xiàn)在在線人數(shù)
*/
$total_online = count($nowonline);
/*
@ 寫入數(shù)據(jù)
*/
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);
您可能感興趣的文章:
- php流量統(tǒng)計(jì)功能的實(shí)現(xiàn)代碼
- php實(shí)現(xiàn)用戶在線時(shí)間統(tǒng)計(jì)詳解
- php下用cookie統(tǒng)計(jì)用戶訪問(wèn)網(wǎng)頁(yè)次數(shù)的代碼
- php實(shí)現(xiàn)統(tǒng)計(jì)網(wǎng)站在線人數(shù)的方法
- php利用cookie實(shí)現(xiàn)訪問(wèn)次數(shù)統(tǒng)計(jì)代碼
- 也談php網(wǎng)站在線人數(shù)統(tǒng)計(jì)
- PHP實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能示例
- php簡(jiǎn)單統(tǒng)計(jì)在線人數(shù)的方法
- PHP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)站訪客統(tǒng)計(jì)的方法實(shí)例
相關(guān)文章
jQuery+Ajax+PHP“喜歡”評(píng)級(jí)功能實(shí)現(xiàn)代碼
本文基于jQuery,通過(guò)PHP與mysql實(shí)現(xiàn)了一個(gè)評(píng)級(jí)功能,是一個(gè)簡(jiǎn)單的非常好的ajax應(yīng)用實(shí)例,需要的朋友可以參考下2015-10-10
PHP使用DOMDocument類生成HTML實(shí)例(包含常見(jiàn)標(biāo)簽元素)
這篇文章主要介紹了PHP使用DOMDocument類生成HTML實(shí)例,包含常見(jiàn)標(biāo)簽元素,如表單、表格、CSS樣式等,最后寫了一個(gè)比較完整的例子,給需要的朋友參考下2014-06-06
Laravel路由設(shè)定和子路由設(shè)定實(shí)例分析
這篇文章主要介紹了Laravel路由設(shè)定和子路由設(shè)定方法,結(jié)合實(shí)例形式分析了Laravel路由的設(shè)定技巧,需要的朋友可以參考下2016-03-03
php獲取新浪微博數(shù)據(jù)API實(shí)例
要獲取新浪微博的數(shù)據(jù),可以通過(guò)他們提供的API,地址:http://open.weibo.com/wiki/API文檔_V2,獲取數(shù)據(jù)的方法如下:2013-11-11
Laravel中數(shù)據(jù)遷移與數(shù)據(jù)填充的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Laravel中數(shù)據(jù)遷移與數(shù)據(jù)填充的相關(guān)資料,文中通過(guò)示例代碼給大家詳細(xì)介紹了實(shí)現(xiàn)的步驟,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-12-12

