統(tǒng)計(jì)在線人數(shù)html代碼(php統(tǒng)計(jì)在線人數(shù))
本篇文章給大家談?wù)劷y(tǒng)計(jì)在線人數(shù)html代碼,以及php統(tǒng)計(jì)在線人數(shù)對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、PHP如何統(tǒng)計(jì)在線人數(shù)
- 2、如何統(tǒng)計(jì)網(wǎng)站在線人數(shù)?
- 3、我一直納悶,網(wǎng)絡(luò)游戲的在線人數(shù)是怎么統(tǒng)計(jì)的
- 4、PHP+MYSQL實(shí)例--網(wǎng)站在線人數(shù)的程序統(tǒng)計(jì)代碼
PHP如何統(tǒng)計(jì)在線人數(shù)
原理:根據(jù)不同的IP統(tǒng)計(jì)出當(dāng)前有多少人在線。
實(shí)現(xiàn)方式:可以用數(shù)據(jù)庫(kù),也可以用文本。
我這里用了文本實(shí)現(xiàn)。
$user_online?=?"count.php";?//?保存人數(shù)的文件
touch?(?$user_online?);?//?如果沒有此文件,則創(chuàng)建
$timeout?=?30;?//?30秒內(nèi)沒動(dòng)作者,認(rèn)為掉線
$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并時(shí)間沒有超時(shí)則放入到數(shù)組中
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以及其他的一些網(wǎng)絡(luò)文件系統(tǒng)中正常工作
fputs?(?$fp,?$user_arr?);
flock?(?$fp,?LOCK_UN?);
fclose?(?$fp?);
echo?"當(dāng)前有"?.?count?(?$temp?)?.?"人在線";
如何統(tǒng)計(jì)網(wǎng)站在線人數(shù)?
Redis字符串中的setbit key offset value(0,1)命令可以對(duì)字符串對(duì)象對(duì)應(yīng)的位進(jìn)行二進(jìn)制賦值。用戶的登陸狀態(tài)可以用一個(gè)bit來表示,這樣1億個(gè)用戶所需的內(nèi)存空間僅為10M左右。
具體實(shí)現(xiàn):首先在redis中初始化字符串:setbit loginstatus? 10000 0。在中間件上,當(dāng)用戶登陸認(rèn)證完成時(shí),獲取用戶uid并在redis上設(shè)置登陸狀態(tài)setbit loginstatus uid 1。獲取在線用戶數(shù)量實(shí)現(xiàn):bitcount loginstatus,前端ajax輪詢?cè)L問接口獲取數(shù)據(jù)。
# 計(jì)算出 7 天都在線的用戶BITOP"AND""7_days_both_online_users""day_1_online_users""day_2_online_users"..."day_7_online_users"# 計(jì)算出 7 在的在線用戶總?cè)藬?shù)BITOP"OR""7_days_total_online_users""day_1_online_users""day_2_online_users"..."day_7_online_users"# 計(jì)算出兩天當(dāng)中只有其中一天在線的用戶BITOP"XOR""only_one_day_online""day_1_online_users""day_2_online_users"
我一直納悶,網(wǎng)絡(luò)游戲的在線人數(shù)是怎么統(tǒng)計(jì)的
眼下,作網(wǎng)站已成為一種時(shí)尚,各式各樣的網(wǎng)站如雨后春筍般冒了出來。有用CGI制作的,有用ASP制作的,還有用PHP制作的,不一而足。有一些網(wǎng)站則能統(tǒng)計(jì)出當(dāng)前的在線人數(shù),如:“目前有32人在線”。那么,用ASP制作的網(wǎng)站怎樣顯示當(dāng)前的在線人數(shù)呢?當(dāng)用ASP制作的網(wǎng)頁(yè)都存放與WWW服務(wù)器的基點(diǎn)目錄并且WWW服務(wù)器啟動(dòng)之后,每當(dāng)有對(duì)ASP文件的HTTP請(qǐng)求時(shí),服務(wù)器都會(huì)去讀取基點(diǎn)目錄下的Global.asa文件。為了統(tǒng)計(jì)網(wǎng)站的在線人數(shù),我們可以在Global.asa文件中包含如下代碼:這樣,網(wǎng)站的在線人數(shù)就被統(tǒng)計(jì)出來了,我們可以利用如下一個(gè)ASP頁(yè)面(js.asp)將它顯示出來:jsh.asp:統(tǒng)計(jì)在線人數(shù)當(dāng)前在線人以上代碼是我在WinNT(IIS4.0)下調(diào)試并通過了的。
PHP+MYSQL實(shí)例--網(wǎng)站在線人數(shù)的程序統(tǒng)計(jì)代碼
首先是創(chuàng)建MYSQL數(shù)據(jù)庫(kù)表。
CREATE TABLE tablename (
field type(max_length) DEFAULT 'default_value' (NOT) NULL
}
可以使用的SQL語句。
CREATE TABLE useronline (
timestamp int(15) DEFAULT '0' NOT NULL,
ip varchar(40) NOT NULL,
file varchar(100) NOT NULL,
PRIMARY KEY (timestamp),
KEY ip (ip),
KEY file (file)
);
下面我們開始使用PHP腳本,首先定義MYSQL的信息。
server = "localhost"; //你的服務(wù)器
db_user = "root"; //你的mysql的用戶名
db_pass = "password"; //你的mysql的密碼
database = "users"; //表的名字
設(shè)置統(tǒng)計(jì)的時(shí)間(多少秒內(nèi)在線人數(shù))
timeoutseconds = 300;
取當(dāng)前時(shí)間。
timestamp = time();
關(guān)于統(tǒng)計(jì)在線人數(shù)html代碼和php統(tǒng)計(jì)在線人數(shù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。