ホームページ  >  記事  >  バックエンド開発  >  現在オンラインの人数を数える 2 つの方法_PHP チュートリアル

現在オンラインの人数を数える 2 つの方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:52:12882ブラウズ

最初の方法: AltaVista 検索エンジンを使用して実現します
この方法は、サイトへのリンクの数を確認することです。これは、AltaVista 検索エンジンを使用して実現されます。ここでは、次の検索エンジンを使用します:
http://www.altavista.com/cgi-bin/query?kl=XX&pg=q&text=yes&q=link:&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=検索";
このようにして、file() 関数を通じて URL を取得できます。
$num_searched = ファイル($url_to_check); これで、取得したファイルが配列 $num_searched に保存されました。次に、配列「About (.*)」で必要なテキストを見つけます
ページが見つかりました。(.*) は何も意味しません。また、誰も URL にリンクしていない場合、AltaVista は「AltaVista が見つかりました
」と表示します。 クエリに一致するドキュメントはありません。」 何人の人が私たちの 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 = ファイル($url_to_check); for ($i = 0; $i if(eregi( "約 (.*) ページが見つかりました。", $num_searched[$i])){
$total_links = eregi_replace( "
約 (.*) ページが見つかりました。", "1", $num_searched[$i]);
}
elseif(eregi( "AltaVista ではクエリに一致するドキュメントが見つかりませんでした。",$num_searched[$i])){
$total_links = "0"; }
}
このようにして、print ステートメントを通じて検索結果を取得できます:
print("$total_links 人が $url にリンクしています");

2 番目の方法: MYSQL データベースを使用する 以下は、PHP 中国人ユーザーからの記事を再投稿したものです。この方法では、現在の接続を処理するために一時データ テーブルを使用します。 ************************************************* * ****************
まず、MySQL ツールを使用してテーブルを作成します:
テーブルの作成 ccol(
id 整数が null ではない auto_increment、#記録された ID
ip char(15) は null ではありません、#訪問者の IP アドレス
dtstamp datetime が null ではありません、#最終アクセス時刻
uri char(255)、訪問者がリクエストした#URI

主キー (ID)

);

次に、PHP コードを書きます:
/*
ファイル: ccol.php - ConCurrent OnLine 統計
目的: 同時にオンライン閲覧する人の数をカウントするため
著者:Hunte、hunte@phpuser.com
変更日:2000-4-25
*/
$期間=1800; 「db.php」が必要です。 // DBSQL が含まれています。詳細については、私の他の記事を参照してください

$ccol=新しいdbSQL

$ccol->connect(); $ccol->query("ccol WHERE から削除
(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(dtstamp))>$duration");
// 30 分より古いレコードを削除します
$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"); //最終アクセス時刻と訪問したページを設定します
}その他{
$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");
// 30 分以内のレコードを検索します。次の WHERE 句はオプションです。時間を超えたレコードは削除されています
$ccol->next_record()
echo "オンラインの人数:", $ccol->f("ccol"); $ccol->free_result();

使い方は?サイトのすべてのページの先頭でこのプログラムを呼び出します。
もちろん、このコードには改善の余地があります。たとえば、通話のたびに 30 分前にレコードを削除するのは不要であり、効率が低下します。
6 時間など、より長い時間後に実行してみることもできます。皆さん自身で考えてください。詳細には触れません。
この方法を少し変更すれば、SESSION管理やWebサイトの訪問統計分析など、他の用途にも活用できます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371591.html技術記事 AltaVista 検索エンジンを使用してこれを行う最初の方法は、サイトへのリンクの数を確認することです。これは、AltaVista 検索エンジンを使用して実現されます。ここでは、以下を使用して検索します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。