也談php網(wǎng)站在線(xiàn)人數(shù)統(tǒng)計(jì)
更新時(shí)間:2008年04月09日 23:11:03 作者:
db層:
db_online.PHP
//該函數(shù)使用戶(hù)自己在線(xiàn),并且檢查其他用戶(hù)的在線(xiàn)情況
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']."人";
{
$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流量統(tǒng)計(jì)功能的實(shí)現(xiàn)代碼
- php實(shí)現(xiàn)用戶(hù)在線(xiàn)時(shí)間統(tǒng)計(jì)詳解
- php下用cookie統(tǒng)計(jì)用戶(hù)訪(fǎng)問(wèn)網(wǎng)頁(yè)次數(shù)的代碼
- php實(shí)現(xiàn)統(tǒng)計(jì)網(wǎng)站在線(xiàn)人數(shù)的方法
- php利用cookie實(shí)現(xiàn)訪(fǎng)問(wèn)次數(shù)統(tǒng)計(jì)代碼
- php使用Session和文件統(tǒng)計(jì)在線(xiàn)人數(shù)
- PHP實(shí)現(xiàn)統(tǒng)計(jì)在線(xiàn)人數(shù)功能示例
- php簡(jiǎn)單統(tǒng)計(jì)在線(xiàn)人數(shù)的方法
- PHP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)站訪(fǎng)客統(tǒng)計(jì)的方法實(shí)例
相關(guān)文章
PHP+原生態(tài)ajax實(shí)現(xiàn)的省市聯(lián)動(dòng)功能詳解
這篇文章主要介紹了PHP+原生態(tài)ajax實(shí)現(xiàn)的省市聯(lián)動(dòng)功能,較為詳細(xì)的分析了ajax交互的原理、實(shí)現(xiàn)方法以及php結(jié)合ajax實(shí)現(xiàn)省市聯(lián)動(dòng)下拉菜單功能的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08PHP門(mén)面模式實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送示例
這篇文章主要為大家介紹了PHP門(mén)面模式實(shí)現(xiàn)簡(jiǎn)單的郵件發(fā)送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05PHP設(shè)置隨機(jī)數(shù)的方法小結(jié)
這篇文章主要介紹了PHP設(shè)置隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式分析了php生成隨機(jī)數(shù)/生成隨機(jī)字符串的6種實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-09-09setcookie中Cannot modify header information-headers already s
本篇對(duì)setcookie中Cannot modify header information-headers already sent by錯(cuò)誤的解決方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05