十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
原理:根据不同的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 ) . "人在线";
要想知道每个数据库的大小的话,步骤如下:
1、进入information_schema
数据库(存放了其他的数据库的信息)
use
information_schema;
2、查询所有数据的大小:
select
concat(round(sum(data_length/1024/1024),2),'MB')
as
data
from
tables;
3、查看指定数据库的大小:
比如查看数据库home的大小
select
concat(round(sum(data_length/1024/1024),2),'MB')
as
data
from
tables
where
table_schema='home';
4、查看指定数据库的某个表的大小
比如查看数据库home中
members
表的大小
select
concat(round(sum(data_length/1024/1024),2),'MB')
as
data
from
tables
where
table_schema='home'
and
table_name='members';
php连接数据库服务器,然后选择使用的数据库名称为information_schema,然后执行查询就行了。看你问的这个问题应该不会不知道用php访问数据库吧。
如果你权限不够的话可能只能对特定的数据库的信息进行查询。
用sql查询语句就能实现 例如 你的表名叫student 里面的性别字段是sex
查询男生有多少人
select count(*) as c from student where sex='男'
查询女生有多少人
select count(*) as c from student where sex='女'
然后在php里用MySQL_fetch_row就能得出结果了
统计,就是把基本的数据,整合起来。
用到sql的,有group by 功能,count功能,order by功能等等。
sql将收集的数据,进行统计分析。
一般情况下,sql处理后得到的数据,还要通过php的逻辑来进行整理。
以一定的格式,展示到前台。
一般都是以数组的方式展示,这也是数据结构的概念。
看这张图片,基本想想结构大概为
{上线数,出单总数,核过总数,总人均,总核率,{(坐席人1,工号1,出单数1,发货数1,核单率1),(坐席人2,工号2,出单数2,发货数2,核单率2)}}
如果用php展示成上面的结构的话,就很好处理了。
$conn
=
mysql_connect('localhost','root','123');
mysql_select_db('db_name');
//数据库名
mysql_query('set
names
utf8',$conn);
#$res
=
mysql_query('select
count(*)
from
user',$conn);
//统计user表里总共有多少条数据
#$res
=
mysql_query('select
*
from
user',$conn);
//把user里面的数据全部显示出来
$arr
=
array();
while($data
=
mysql_fetch_assoc($res))
{
$arr[]
=
$data;
}
print_r($arr);
可以依次把上面查询语句前面的注释去掉查看效果
其实我感觉你这个逻辑没问题,代码有点问题,我是这么认为的,代码应该是这样
$idzhi = rand(0,表中数据条数);
$data = $data['id']; // 我不明白你这里是什么意思
$arr = $m-where($data = $idzhi)-limit(8) -select();
不过我总感觉上面的有问题
$idzhi = rand(0,表中数据条数);
$arr = $m-where("id = $idzhi")-limit(8) -select();
不对的话就试试这个,我个人觉得这样是对的,不明白你那个$data['id'];是干嘛用的