国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

兩種統(tǒng)計(jì)當(dāng)前在線人數(shù)的方法

2024-05-04 23:00:20
字體:
供稿:網(wǎng)友
第一種方法:利用altavista搜索引擎來實(shí)現(xiàn)

這種方法是檢查與你的站點(diǎn)鏈接的數(shù)目。這里用altavista搜索引擎來實(shí)現(xiàn)。在這里,我們用如下搜索引擎:
http://www.altavista.com/cgi-bin/query?kl=xx&pg=q&text=yes&q=link%3a&search=search。
這是altavista的一個(gè)文本版本。這樣可以節(jié)省我們大量的需要解析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%3a$url_encoded&search=search";

  這樣,我們可以通過file()函數(shù)回取url了。

$num_searched = file($url_to_check);

  現(xiàn)在我們所取回的文件已經(jīng)存放在數(shù)組$num_searched中。現(xiàn)在要在數(shù)組中查找我們想要的文本"about (.*)
pages found. "。(.*)表示在任何東西。而且,如果沒有人鏈接我們的url,altavista將顯示"altavista found
no document matching your query."。因?yàn)槲覀兿胫蓝嗌賯€(gè)人正在與我們的url進(jìn)行著鏈接,那段文本將被看
作0個(gè)人鏈接。

$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%3a$url_encoded&search=search";

$num_searched = file($url_to_check);
for ($i = 0; $i < count($num_searched); $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";
}
}


  這樣,我們可以通過打印語句得到我們的查找結(jié)果了:
print("$total_links people are linking to $url");


第二種方法:利用mysql數(shù)據(jù)庫以下是我轉(zhuǎn)貼的一篇文章,來自于php中文用戶,起方式是利用臨時(shí)數(shù)據(jù)表處理當(dāng)前連接,具體內(nèi)容如下:

***************************************************************
首先,用mysql的工具建一個(gè)表:

create table ccol(
id integer not null auto_increment, #記錄的id
ip char(15) not null, #訪問者的ip地址
dtstamp datetime not null, #最后訪問時(shí)間
uri char(255), #訪問者請求的uri
primary key (id)
);

然后,寫一段php代碼:


/*
文件:ccol.php - concurrent online statistics
目的:統(tǒng)計(jì)同時(shí)在線瀏覽的人數(shù)
作者:hunte, [email protected]
修改: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");
//刪除超過半小時(shí)的記錄
$ccol->query("select * from ccol where ip="$remote_addr"");
//判斷當(dāng)前的ip是否在該表中存在
if ($ccol->nf())//有?
{
$ccol->next_record();//下移找到的記錄數(shù)組的指針
$id=$ccol->f("id");
$ccol->query("update ccol set dtstamp=now(), uri="$request_uri" where id=$id");
//設(shè)置最后訪問時(shí)間和訪問頁面
}
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))<=$duration");
//找出在半個(gè)小時(shí)內(nèi)的記錄,后面的where子句可有可無--超出時(shí)間的已經(jīng)被刪除了
$ccol->next_record()
echo "在線人數(shù):", $ccol->f("ccol");
$ccol->free_result();

怎么用呢?在站點(diǎn)的每個(gè)頁面的上面調(diào)用這個(gè)程序.


當(dāng)然,這段代碼還有改進(jìn)的余地。例如,在每次調(diào)用是都要刪除半小時(shí)前的記錄,這是沒有必要而且會降低效率。
可以一個(gè)什么辦法過更長的時(shí)間再做,比如6小時(shí)。大家自個(gè)兒想想吧,我就不說了。

這種方法只要稍做修改,就可以派上別的用處,如session的管理、網(wǎng)站的訪問統(tǒng)計(jì)分析等。


收集最實(shí)用的網(wǎng)頁特效代碼!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 城固县| 韩城市| 依兰县| 读书| 镇巴县| 仙居县| 综艺| 揭西县| 盐边县| 石屏县| 秦安县| 子洲县| 格尔木市| 遂溪县| 永修县| 久治县| 福鼎市| 长治县| 姚安县| 府谷县| 霍城县| 东乡县| 随州市| 安吉县| 鲁山县| 华蓥市| 阳山县| 无为县| 贵州省| 南投市| 雷波县| 山阴县| 淳安县| 纳雍县| 新余市| 綦江县| 沧源| 襄汾县| 绥滨县| 东阳市| 长治县|