今天閒來無事,想在博客統計中顯示在線人數。在網上找了好多例子,不是數據庫存儲數據就是文件存儲,代碼也看起來過於復雜。
晚上回來後,構思了下,看到我服務器中安裝有 Memcache 服務,何不用 Memcache 實現呢。
下面就來講下實現過程:
效果圖:

實現代碼:
<?php
$mc = new Memcache ();
// 連接memcache
$mc->connect ( "127.0.0.1", 11211 );
// 獲取 在線用戶 IP 和 在線時間數據
$online_members = $mc->get ( 'online_members' );
// 如果為空,初始化數據
if (! $online_members) {
$online_members = array ();
}
// 獲取用戶ip
$ip = $_SERVER ["REMOTE_ADDR"];
// 為訪問用戶重新設置在線時間
$online_members [$ip] = time ();
foreach ($online_members as $k => $v) {
// 如果三分鐘後再未訪問頁面,剛視為過期
if (time() - $v > 180) {
unset($online_members[$k]);
}
}
// 重新設置在線用戶數據
$mc->set ( 'online_members', $online_members );
// 重新獲取在線用戶數據
$online_members = $mc->get ( 'online_members' );
// 輸入統計在線人數
echo count($online_members);
?>