
正文
在线数据php 在线数据造假如何处罚
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php怎样统计在线人数
首先,php不能直接统计在线人数,因为php只能获取用户上线的事件,没法获取用户下线的事件。
目前最靠谱的方法是,用户上线时创建一个session数据,并把这个数据保存在数据库或某个文件里,该用户每次操作都更新一次这个数据的时间。在统计人数的时候,把最后一次更新超过某个时间(比如说10分钟)的数据删除掉,剩下有多少个数据,就有多少用户在线。
不过缺点是显而易见的,比如一个用户下线了,他可能之后最多有10分钟会被计算在在线人数里,再比如一个人看一个网页的文章看了10多分钟,他就可能被排除在在线人数之外了。
总之,只能算个大概。
相关问答
Q1: php如何利用session和mysql数据库来统计用户在线时常
您好,很高兴回答您的问题,希望我的回答能帮助到您,蟹蟹
用户在线时长计算,首先,用户登录成功把登录时间以及用户id保存在session中
当用户退出时,当前时间减去登录时间就是用户在线时长
//用户登录
public function dologin(){
$adminname = I("param.adminname","","trim");//用户名
$password = I("param.password","","trim");//密码
$where = "adminname = '{$adminname}' and password = md5('{$password}')";
$data['login_time'] = time();
$is_find = M("users_admin")-where($where)-find();
if($is_find){
$result = M("users_admin")-where($where)-setField($data);
if ($result){
$_SESSION['uid'] = $is_find['id'];
$_SESSION['login_time'] = $data['login_time'];
echo("登录成功");
}
}
}
//用户退出代码
public function logout(){
$login_time = $_SESSION['login_time'];
$now = time();
$line_time = $now-$login_time;
$result = M("users_admin")-where("id = ".$_SESSION['uid'])-setField('line_time',$line_time);
session(null);
echo("成功退出");
}
Q2: 怎样在 VPS 上搭建一个在线 PHP+MySQL 的编辑运行环境
下面让我们建立MYSQL数据库
apt-get install mysql-server mysql-client
安装phpmyadmin
apt-get install phpmyadmin
这时,你会发现直接访问无法使用,
这时我们需要建立一个软连接,执行下面的命令
#sudo ln -s /usr/share/phpmyadmin/ /var/www/
或者你把phpmyadmin直接复制到 /var/www/的文件夹下面也可以
下面介绍一下Debian /Ubuntu Linux中, lighttpd的相关命令
停止lighttpd服务器
# /etc/init.d/lighttpd stop
重启lighttpd服务器
# /etc/init.d/lighttpd restart
启动lighttpd服务器
# /etc/init.d/lighttpd start
第二步,Lighttpd与PHP的优化。
这步也是最重要的,关系到WordPress能否良好的运行在64M内存的VPS上。
修改 /etc/lighttpd/conf-available/10-fastcgi.conf
max-procs = 1
PHP_FCGI_CHILDREN = 2
PHP_FCGI_MAX_REQUESTS = 这个随意,但是不要为0或者太大
说一下为什么要这么设置,php-cgi进程数=(max-procs)X(1+PHP_FCGI_CHILDREN),1个php-cgi进程大约占用19M内存,也就是说64M的内存VPS最好不要超过3个php-cgi进程,剩下的内存要留给MySQL和系统。如果仍然出现500错误,可以降低到2个,也就是PHP_FCGI_CHILDREN = 1
其余优化
/etc/php5/cgi/php.ini 中 memory_limit建议适当减少,只要保证WordPress可以运行即可(WordPress安装至少需要32MB内存,但运行只需要8MB或者更少)。
/etc/mysql/my.cnf 中相应的参数,请减少到默认值的1/8左右,或者更低。
Q3: 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 ) . "人在线";
Q4: PHP解析JSON数据,在线等!!!
先用json_decode把json解析成一个Object。接着用php提供的foreach循环,遍历得到key-value对,就能达到你想要的东西了
Q5: php 如何做在线人数统计
两种方案:1,每上线一个人就向数据库写入一次数据,然后定期做回收。2,利用数据库储存session。目前看来,第二种更简单实用






