function checkOnline($userid,$tempid=null)
{
$conn = connect();
//對(duì)于所有用戶(hù)
//先設(shè)置自己為在線(xiàn)
$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='Y' WHERE UserID=".$userid;
$result = query($stmt,$conn);
//info($stmt);
//如果當(dāng)前用戶(hù)是游客
if ($tempid != null)
{
$stmt = "SELECT TempID FROM ".DB_NAME.".TEMPUSER WHERE
TempID=".$tempid;
$result = query($stmt,$conn);
//info($stmt);
//如果該游客還在線(xiàn)
if ($row = fetch_array($result))
{
$stmt = "UPDATE ".DB_NAME.".TEMPUSER SET
RequestTime='".getCurrentTime()."' WHERE TempID=".$tempid;
$result = query($stmt,$conn);
//info($stmt);
}
//該游客已經(jīng)離線(xiàn)
else
{
$stmt = "INSERT INTO ".DB_NAME.".TEMPUSER
VALUES('".$tempid."','".getCurrentTime()."')";
$result = query($stmt,$conn);
//info($stmt);
}
}
//查看其他用戶(hù)
//普通用戶(hù)
$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='N' WHERE ".time()." -
unix_timestamp(RequestTime) > ".ONLINE_DURATION." AND UserGroupID != ".GUEST;
$result = query($stmt,$conn);
//游客
$stmt = "DELETE FROM ".DB_NAME.".TEMPUSER WHERE ".time()." -
unix_timestamp(RequestTime) > ".ONLINE_DURATION;
$result = query($stmt,$conn);
disconnect($conn);
}
//得到在線(xiàn)人數(shù),分用戶(hù)和游客
function getOnlineNumber()
{
$olnum = array();
$conn = connect();
$stmt = "SELECT COUNT(UserID) FROM ".DB_NAME.".USER WHERE IsOnline='Y' AND
UserGroupID != 4"; //4 為guest的用戶(hù)組id
//info ($stmt);
$result = query($stmt,$conn);
$olnum['user'] = result($result,0,"COUNT(UserID)");
$stmt = "SELECT COUNT(TempID) FROM ".DB_NAME.".TEMPUSER";
//info ($stmt);
$result = query($stmt,$conn);
if ($row = fetch_array($result))
{
$olnum['guest'] = $row['COUNT(TempID)'];
}
disconnect($conn);
return $olnum; //from www.w3sky.com
}
其中的connect(), disconnect(), query(),fetch_array()函數(shù)在dbmanager.inc.PHP中
dbmanager.inc.PHP
define("DB_NAME","databasename");
define("DB_USER","user");
define("DB_PASS","pass");
define("DB_HOST","localhost");
function connect()
{
//echo "Connecting to Host:".HOST."<br>";
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
/*
if ($conn)
{
echo "Connect to database sucessfully. connection id:".$conn."<br>";
}
else
{
echo "Connect to database failed.<br>";
}
*/
return $conn;
}
function pconnect()
{
return mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
}
function disconnect($conn)
{
$close = mysql_close($conn);
/*
if ($close)
echo "MySQL Database disconnected.<br>";
else
echo "MySQL Database disconnecting failed. Please try again.<br>";
*/
}
function query($stmt,$conn)
{
return mysql_query($stmt,$conn); //from www.w3sky.com
}
function fetch_array($result)
{
return mysql_fetch_array($result);
}
function fetch_row($result)
{
return mysql_fetch_row($result);
}
function num_rows($result)
{
return mysql_num_rows($result);
}
function result($result,$row,$field)
{
return mysql_result($result,$row,$field);
}
rule層:
rl_online.PHP
function getOnline()
{
if ($userid == 2)
{
if (session_is_registered("tempuserid"))
{
checkOnline($userid,$tempuserid);
}
}
else
{
checkOnline($userid);
}
return getOnlineNumber();
}
ui層:
ui_online.PHP
$online_num = getOnline();
echo "在線(xiàn)人數(shù),注冊(cè)用戶(hù)".$online_num['user']."人,游客".$online_num['guest']."人";
也談php網(wǎng)站在線(xiàn)人數(shù)統(tǒng)計(jì)
2019-10-28 13:23php教程網(wǎng) PHP教程
db層: db_online.PHP //該函數(shù)使用戶(hù)自己在線(xiàn),并且檢查其他用戶(hù)的在線(xiàn)情況
延伸 · 閱讀
- 2022-03-10簡(jiǎn)單談?wù)刢entos7中配置php
- 2022-03-06Ubuntu14.04服務(wù)器環(huán)境下配置PHP7.0+Apache2+Mysql5.7的方
- 2022-03-05centos yum php 7.x 無(wú)需刪除升級(jí)的方法
- 2022-03-05Centos7下PHP安裝gd庫(kù)的實(shí)例講解
- 2022-03-03linux環(huán)境下安裝PHP的OpenSSL擴(kuò)展的方法講解
- 2022-02-27CentOS 7.x編譯安裝Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4
- PHP教程
PHP中讀取文件的8種方法和代碼實(shí)例
這篇文章主要介紹了PHP中讀取文件的8種方法和代碼實(shí)例,本文總結(jié)了PHP中讀取文件的8個(gè)函數(shù),每一個(gè)都附有使用例子及注意事項(xiàng)等,需要的朋友可以參考下...
- PHP教程
PHP常量DIRECTORY_SEPARATOR原理及用法解析
這篇文章主要介紹了PHP常量DIRECTORY_SEPARATOR原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友...
- PHP教程
php全角字符轉(zhuǎn)換為半角函數(shù)
這篇文章主要介紹了PHP全角半角轉(zhuǎn)換函數(shù),把目前能找到的所有全角都列出來(lái)了一個(gè)個(gè)替換吧,需要的朋友可以參考下 ...
- PHP教程
php學(xué)習(xí)之?dāng)?shù)據(jù)類(lèi)型之間的轉(zhuǎn)換介紹
php學(xué)習(xí)之?dāng)?shù)據(jù)類(lèi)型之間的轉(zhuǎn)換介紹,學(xué)習(xí)php的朋友可以參考下。 ...
- PHP教程
php實(shí)現(xiàn)的支持imagemagick及gd庫(kù)兩種處理的縮略圖生成類(lèi)
這篇文章主要介紹了php實(shí)現(xiàn)的支持imagemagick及gd庫(kù)兩種處理的縮略圖生成類(lèi),包含了用法的詳細(xì)描述,非常實(shí)用,需要的朋友可以參考下...
- PHP教程
php htmlentities()函數(shù)的定義和用法
下面小編就為大家?guī)?lái)一篇php htmlentities()函數(shù)的定義和用法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧...
- PHP教程
PHP變量的定義、可變變量、變量引用、銷(xiāo)毀方法
這篇文章主要介紹了PHP變量的定義、可變變量、變量引用、銷(xiāo)毀方法,需要的朋友可以參考下 ...
- PHP教程
php學(xué)習(xí)筆記 數(shù)組的常用函數(shù)
只要一個(gè)變量,需要在多個(gè)方法使用,就將這個(gè)變量聲明為成員屬性,可以直接在這個(gè)對(duì)象中的所有方法中使用 成員屬性,相當(dāng)于這個(gè)對(duì)象中的全局變量...