搜索
首页php教程php手册两种统计当前在线人数的方法

两种统计当前在线人数的方法

Jun 13, 2016 am 11:35 AM
人数使用在线实现搜索引擎方法检查统计

第一种方法:利用AltaVista搜索引擎来实现
这种方法是检查与你的站点链接的数目。这里用AltaVista搜索引擎来实现。在这里,我们用如下搜索引擎:
http://www.altavista.com/cgi-bin/query?kl=XX&pg=q&text=yes&q=link:&search=Search。
这是AltaVista的一个文本版本。这样可以节省我们大量的需要解析HTML的代码。接着,我们使用rawurlencode()来处理我们确切的URL保证Altavista能够正确地处理它。处理如下:
$url = "http://www.oso.com.cn";
$url_encoded = rawurlencode($url);
$url_to_check = "http://www.altavista.com/cgi-bin/query?
kl=XX&pg=q&text=yes&q=link:$url_encoded&search=Search";
  这样,我们可以通过file()函数回取URL了。
$num_searched = file($url_to_check);
  现在我们所取回的文件已经存放在数组$num_searched中。现在要在数组中查找我们想要的文本"About (.*)
pages found. "。(.*)表示在任何东西。而且,如果没有人链接我们的URL,AltaVista将显示"AltaVista found
no document matching your query."。因为我们想知道多少个人正在与我们的URL进行着链接,那段文本将被看
作0个人链接。
$url = "http://www.oso.com.cn";
$url_encoded = rawurlencode($url);
$url_to_check =
"http://www.altavista.com/cgi-bin/query?kl=XX&pg=q&text=yes&q=link:$url_encoded&search=Search";
$num_searched = file($url_to_check);
for ($i = 0; $i if(eregi( "About (.*) pages found.", $num_searched[$i])){
$total_links = eregi_replace( "
About (.*) pages found.", "1", $num_searched[$i]);
}
elseif(eregi( "AltaVista found no document matching your query.",$num_searched[$i])){
$total_links = "0";
}
}
  这样,我们可以通过打印语句得到我们的查找结果了:
print("$total_links people are linking to $url");

第二种方法:利用MYSQL数据库以下是我转贴的一篇文章,来自于PHP中文用户,起方式是利用临时数据表处理当前连接,具体内容如下:
***************************************************************
首先,用MySQL的工具建一个表:
CREATE TABLE ccol(
id integer not null auto_increment, #记录的ID
ip char(15) not null, #访问者的IP地址
dtstamp datetime not null, #最后访问时间
uri char(255), #访问者请求的URI
primary key (id)
);

然后,写一段PHP代码:
/*
文件:ccol.php - ConCurrent OnLine statistics
目的:统计同时在线浏览的人数
作者:Hunte, hunte@phpuser.com
修改:2000-4-25
*/
$duration=1800;
require "db.php";
//包含DBSQL,详情可以参考我的另一篇文章
$ccol=new dbSQL;
$ccol->connect();
$ccol->query("DELETE FROM ccol WHERE
(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))>$duration");
//删除超过半小时的记录
$ccol->query("SELECT * FROM ccol WHERE ip="$REMOTE_ADDR"");
//判断当前的IP是否在该表中存在
if ($ccol->nf()) {
$ccol->next_record();//下移找到的记录数组的指针
$id=$ccol->f("id");
$ccol->query("UPDATE ccol SET dtstamp=now(), uri="$REQUEST_URI" WHERE id=$id");
//设置最后访问时间和访问页面
} else{
$ccol->query("INSERT INTO ccol VALUES (0, "$REMOTE_ADDR", now(), "$REQUEST_URI")");
}

$ccol->query("SELECT COUNT(*) AS ccol FROM ccol WHERE
(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp)) //找出在半个小时内的记录,后面的WHERE子句可有可无--超出时间的已经被删除了
$ccol->next_record()
echo "在线人数:", $ccol->f("ccol");
$ccol->free_result();

怎么用呢?在站点的每个页面的上面调用这个程序.
当然,这段代码还有改进的余地。例如,在每次调用是都要删除半小时前的记录,这是没有必要而且会降低效率。
可以一个什么办法过更长的时间再做,比如6小时。大家自个儿想想吧,我就不说了。
这种方法只要稍做修改,就可以派上别的用处,如SESSION的管理、网站的访问统计分析等。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)