原理:根據不同的IP統計出當前有多少人在線。
實現方式:可以用數據庫,也可以用文本。
我這裏用了文本實現。
$user_online?=?"count.php";?//?保存人數的文件touch?(?$user_online?);?//?如果沒有此文件,則創建
$timeout?=?30;?//?30秒內沒動作者,認為掉線
$user_arr?=?file_get_contents?(?$user_online?);
$user_arr?=?explode?(?'#',?rtrim?(?$user_arr,?'#'?)?);
print_r?(?$user_arr?);
$temp?=?array?();
foreach?(?$user_arr?as?$value?)?{
$user?=?explode?(?",",?trim?(?$value?)?);
if?(($user?[0]?!=?getenv?(?'REMOTE_ADDR'?))?&&?($user?[1]?>?time?()))?{?//?如果不是本用戶IP並時間沒有超時則放入到數組中
array_push?(?$temp,?$user?[0]?.?","?.?$user?[1]?);
}
}
array_push?(?$temp,?getenv?(?'REMOTE_ADDR'?)?.?","?.?(time?()?+?($timeout))?.?'#'?);?//?保存本用戶的信息
$user_arr?=?implode?(?"#",?$temp?);
//?寫入文件
$fp?=?fopen?(?$user_online,?"w"?);
flock?(?$fp,?LOCK_EX?);?//?flock()?不能在NFS以及其他的壹些網絡文件系統中正常工作
fputs?(?$fp,?$user_arr?);
flock?(?$fp,?LOCK_UN?);
fclose?(?$fp?);
echo?"當前有"?.?count?(?$temp?)?.?"人在線";