本文目錄一覽:
- 1、php怎樣統計在線人數
- 2、PHP如何統計在線人數
- 3、PHP中如何實現在線人數的統計和顯示
- 4、php 統計在線人數 根據IP判斷哪個地方多少人, 也就是說,某C段的多少人。這個樣子,不知道怎麼寫判斷。
- 5、php如何實現記錄網站在線人數
- 6、thinkphp中如何獲取用戶的ip地址實現網站訪問人數統計的計數器
php怎樣統計在線人數
php怎樣統計在線人數
?php
require_once(‘config.php’);
function counter()
{
session_start();
$sql=”select counter from counter”;
$result=@mysql_query($sql);
if(!empty($result))
{
$row=mysql_fetch_array($result);
$counter=++$row[counter];
if(!$_SESSION[‘counter’])
{
$query=”update counter set counter=$counter”;
$result=@mysql_query($query);
if($result)
{
$_SESSION[‘counter’]=true;
}
}
$counter_len=strlen($counter);
for($i=0;$i$counter_len;$i++)
{
$number=substr($counter,$i,1);
if(isset($number))
{
echo “img src=’image/”.$number.”.gif'”;
}
}
}
}
?
PHP如何統計在線人數
原理:根據不同的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 ) . “人在線”;
PHP中如何實現在線人數的統計和顯示
要使用資料庫,建立一個表,比如名字是online,至少有以下列:
name_ip 存放登錄用戶名,未登錄的存放IP,char類型
url 存放每個頁面的地址,char類型
last_time 存放刷新頁面的最後時間,int類型
表的主鍵是:name_ip+url
每個頁面一開始就要刷新這個表,使用的SQL是:
$name_ip=’用戶名或者IP’;//你能搞定
$url=$_SERVER[“PHP_SELF”];
$time=time();
$sql=”replace delayed into online (name_ip,url,last_time) values (‘$name_ip’,’$url’,$time)”;
mysql_query($sql);
獲取某頁面在線人數的查詢是語句
$limit=time()-10*60;//10分鐘內訪問的認為在線,10分鐘*60秒/分鐘
$sql=”select count(*) from online where url=’$url’ and last_time=$limit”;
$res=mysql_query($sql);
list($online_count)=mysql_fetch_row($res);
mysql_free_result($res);
echo “本頁面在線人數: $online_count”;
php 統計在線人數 根據IP判斷哪個地方多少人, 也就是說,某C段的多少人。這個樣子,不知道怎麼寫判斷。
$on = array(0=array(‘uid’=222,’ip’=’22.121.11.22’),…);
$ip_part= array(-2323,22323,1231232,1231231231,123123123123,12312332131);//ip段的小大順序排列
$ip_part_count = array();
foreach($on as $k=$v){
$on[$k][‘ip’] = ip2long($v[‘ip’]);
for($i=0;$icount($ip_part);$i++)
if($on[$k][‘ip’] = $ip_part[$i] and $on[$k][‘ip’] $ip_part[$i+1]){
if(isset($ip_part_count[$i])){
$ip_part_count[$i]++;
}
else{
$ip_part_count[$i] = 1;
}
}
}
}
這裡寫代碼容易出錯,不供測試,僅供參考
php如何實現記錄網站在線人數
這個方法是我重網上找的,你可以看看:
主要原理:把每個訪客的session ID 作為文件名,生成一個空白文件在指定的文件夾。如果檢查到這份文件的生成時間已經超過了指定的時間,即刪除。那麼,統計文件的數量可以得到在線人數。
如果的代碼放在一份獨立的文件,網站所有頁面的都引用這份代碼。即訪客每瀏覽一次頁面都會調用一次此代碼。
?php
ob_start();
session_start();
$num=0;
$dirpt = “online”; // 必須先建立一個online文件夾,存在下面要生成的文件
$reftime = 1;
if (is_dir($dirpt) $dir = opendir($dirpt)) {
while (($file = readdir($dir)) !== false) {
if(strcmp($file,”..”)==0 || strcmp($file,”.”)==0){
continue;
}
$D_[date(“Y-m-d H:i:s”,filemtime($dirpt.”/”.$file))]=$file;
$num++;
unset($cum);
}
closedir($dir);
$filename = session_id();
$fp = fopen($dirpt.”/”.$filename,”w”);
fputs($fp,””);
fclose($fp);
$ntime = date(“Y-m-d H:i:s”,mktime(date(“H”),date(“i”)-1,0,date(“m”),date(“d”),date(“Y”)));
$D_[$ntime]=”-“;
krsort($D_);
$onlinenumber=0;
while(1){
$vkey=key($D_);
$onlinenumber++;
if(strcmp($ntime,$vkey)==0){
break;
}else{
array_shift($D_);
}
}
array_shift($D_);
reset($D_);
while(count($D_)0){
$ckey=key($D_);
unlink($dirpt.”/”.$D_[$ckey]);
if(!next($D_)){
break;
}
}
}else{
@chmod(“..”,0777);
@mkdir($dirpt,0777);
}
$online=$onlinenumber-1;
$retime=60*$reftime;
echo “當前在線”.$online.”人,”;
echo $retime;
ob_end_flush();
?
thinkphp中如何獲取用戶的ip地址實現網站訪問人數統計的計數器
thinkphp默認封裝了獲取ip方法:get_client_ip()
統計人數這個我也建議用cnzz,很方便,你想看的數據基本都能滿足。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239170.html