這篇文章主要介紹了php使用Session和文件統計在線人數,本文直接給出實例代碼,需要的朋友可以參考下
- <?php
- /*
- @ PHP 在線人數統計程序
- Copyright (c) by Pader 1:25 2009年1月7日
- How to use it: <script src="online.php"></script>
- note: 一般獨立在線人數統計程序都是統計在線的IP數,而這并不準確
- 例如局域網的訪問者,比如公司,學校機房和網吧,雖然內網IP不同,但是外網IP都是一樣
- 如果同一個局域網的無論多少人人訪問你的網站則只被認為是一個人
- 這個小巧的程序解決了此問題,它以電腦為單為,每臺電腦便算一個訪問者
- 當然因為使用的是COOKIE,如果你在同一臺電腦上使用兩種不同核心的瀏覽器訪問那就別當別論了
- */
- $filename = 'online.txt'; //數據文件,如果沒有新建
- $cookiename = 'VGOTCN_OnLineCount'; //cookie名稱
- $onlinetime = 600; //在線有效時間,單位:秒 (即600等于10分鐘)
- @$online = file($filename); //數據文件,如果沒有新建
- $nowtime = time();
- $nowonline = array();
- /*
- @ 得到仍然有效的數據
- */
- if(!emptyempty($online)){
- foreach($online as $line) {
- $row = explode('|',$line);
- $sesstime = trim($row[1]);
- if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效時間內,則數據繼續保存,否則被放棄不再統計
- $nowonline[$row[0]] = $sesstime; //獲取在線列表到數組,會話ID為鍵名,最后通信時間為鍵值
- }
- }
- }
- /*
- @ 創建訪問者通信狀態
- 使用cookie通信
- COOKIE 將在關閉瀏覽器時失效,但如果不關閉瀏覽器,此 COOKIE 將一直有效,直到程序設置的在線時間超時
- */
- 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);
新聞熱點
疑難解答