三里屯摇滚 发表于 2011-06-11 16:44

php实现当前用户在线人数

php实现当前用户在线人数


原理:根据不同的IP统计出当前有多少人在线。
实现方式:可以用数据库,也可以用文本。
我这里用了文本实现。<?php
/**
*@ Date         2010.04.07
*@ Author       华夏之星 PHP100.com
*@ Blog         http://hi.baidu.com/woaidelphi/blog
*/
$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 != getenv('REMOTE_ADDR')) && ($user > time())) {//如果不是本用户IP并时间没有超时则放入到数组中
array_push($temp,$user.",".$user);
}
}
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)."人在线";
?>

辣椒封 发表于 2011-06-11 23:08

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

亮图标 发表于 2011-06-12 16:20

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

coolesting 发表于 2011-06-13 21:08

用文件方式保存, 点一页面, 改一次文件, 这么频繁, 为什么不用数据库。

鼓励哇 发表于 2011-06-13 21:53

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

imbiss 发表于 2011-06-14 19:11

一般用mysql 的内存表来保存session信息就能达到目的了。

谁与争辉 发表于 2011-06-14 23:30

火速围观!牛人招PHP技术员-出得厅堂,下得厨房,进得洞房!有木有!!有木有!!

http://bbs.phpchina.com/thread-214382-1-1.html   这公司太有才了,做PHP的还要求会武功,找金庸大师学学吧,笑死俺了哈

pxllong 发表于 2011-06-29 16:03

并发高了 你这个就是瓶颈

liexusong 发表于 2011-06-30 09:30

用memcached吧
页: [1]
查看完整版本: php实现当前用户在线人数