php使用Session和檔案統計線上人數_php執行個體

來源:互聯網
上載者:User
<?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(!empty($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); 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.