當前位置:首頁 » 編程語言 » php在線人數

php在線人數

發布時間: 2022-05-16 11:02:01

⑴ 詢問一個200人同時在線的php系統,需要怎麼的伺服器

200人同時在線並不是一個大的數字
普通4核的伺服器就足夠用了
xeon5410以上 8G內存 最好用linux系統,不會玩的話windows也沒問題
最優的架構應該是LNMP=Linux+Nginx+Mysql+Php

⑵ php利用文件屬性和session統計在線人數的原理

<?php
ob_start();
session_start();
$num=0;
$dirpt = "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 "當前在線<strong><font color=red>$online</font></strong>人<meta http-equiv=refresh content=\"{$retime},url=\">";
ob_end_flush();
?>
<!--
《利用文件屬性結合Session進行在線人數統計》
作者:sports98
編寫日期: 2003-3-19
-->

⑶ 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;$i<count($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如何統計在線人數

原理:根據不同的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_arras$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 獲取在線人數

function online_user() {
global $tablepre, $db, $localtime;
// 超時時間
$outtime = $localtime - (60 * 15);
// 用戶相關參數
$uid = isset($_SESSION['s_userid']) ? intval($_SESSION['s_userid']) : 0;
$ip = $_SERVER['REMOTE_ADDR'];
$sid = substr(md5($ip), 0, 5);
// 刪除同Ip用戶
$user = $db -> fetch_one_array("SELECT * FROM {$tablepre}onlineuser WHERE sid = '$sid' AND ip = '$ip' ");
if (!empty($user)) {
// 更新當前用戶狀態
$db -> query("UPDATE {$tablepre}onlineuser SET uid = $uid, activetime = $localtime WHERE sid = '$sid' AND ip = '$ip' ");
} else {
// 寫入當前用戶狀態
$db -> query("INSERT INTO {$tablepre}onlineuser (sid,uid,activetime,ip) VALUES ('$sid',$uid,$localtime,'$ip')");
}
// 刪除超時用戶
$db -> query("DELETE FROM {$tablepre}onlineuser WHERE activetime < $outtime ");
}

資料庫欄位:sid,uid,activetime,ip
在程序入口外調用

⑹ 用dz做個php的地方論壇的,如果1000人同時在線,100M空間,50M資料庫夠用么

1000人同時在線,你的網站都趕上現在主流的一些站了..校內網,51同時在線1000也不是一直OK的
如果真的這樣,別說100M了,你還是租伺服器吧
IIS連接限制1000以上,流量不限制,CPU5%以上

本地論壇,同時在線50人就算很牛了..可以說不是一般的牛,如果能穩定一天同時在線50人,你論壇可以說的上是你們當地最牛的論壇了
剛開始買個空間300M 50M資料庫,IIS 100左右,流量不限,CPU1 2都可以..足夠了

⑺ 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判斷哪個地方多少人, 也就是說...

php 統計在線人數 根據IP判斷哪個地方多少人, 也就是說...
使用資料庫,建立一個表,比如名字是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 通過ajax做瀏覽量和在線人數,要求包括訪問緩存的次數,怎麼做

這個是把session存放在資料庫,這個技術lamp兄弟連的視頻教程有講。
你可以找一下兄弟連的視頻教程。希望對你有幫助

⑽ Linux的虛擬主機 4核的電腦 CPU和並發連接數都不限 一個PHP網站的同時在線人數峰值可以到多少

不是看硬體的一般linux上都是lamp apache+php+mysql
Apache2.0以上最大連接數為4000-6000
一般峰值超過4000個並發連接apache就差不多了,再上去性能就不行了。

Nginx號稱可以最大並發連接數超過10000個,實際達到8000左右。
不過這些都是在硬體高新能的情況下的。你的4核應該不是問題了。

一般提高並發訪問連接有如下方法:1。 使用反向代理
2。 建立lamp集群 + 反向代理 (大型網站多是如此)

熱點內容
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:609
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:88
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:688
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:484
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:255
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:240
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:225
php花生 發布:2025-05-14 12:54:30 瀏覽:550
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427