1. 程式人生 > >php統計當前線上人數

php統計當前線上人數

<?php
$online_log = 'online.txt';  // 儲存使用者ip和時間的檔案,形式:ip,time = 192.168.xx.xx,1516242630
$timeout = 1800;   // 設定多長時間(30分)使用者不在,設為掉線
$temp = array();   // 儲存當前線上所有使用者,後用來更新檔案

if (!file_exists($online_log)) {    // 檔案不存在,就建立
    touch($online_log);
}
$onlines = file($online_log);   // 以陣列的形式將使用者ip和time取出來array([0]=>'192.168.xx.xx,1516242630', [1]=>...)

for ($i=0; $i<count($onlines); $i++) {
    $online = explode(',', trim($onlines[$i]));   // 將使用者ip和時間分隔開
    // 過濾檔案中其他的瀏覽者:前面!=是其他的瀏覽者,和當前的ip(自己)不一樣,過濾掉超時的其他ip
    if ($online[0] != $_SERVER['REMOTE_ADDR'] && $online[1] > time()) {
        array_push($temp, $online[0] . ',' . $online[1]);
    }
}
// 更新當前的ip(自己)時間
array_push($temp, $_SERVER['REMOTE_ADDR'] . ',' . (time() + $timeout));

// 更新線上人數的檔案
$onlines = implode("\n", $temp);
$fp = fopen($online_log, 'w');
fputs($fp, $onlines);
fclose($fp);

echo "當前線上人數" . count($temp);