最初の方法: 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
$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
);
次に、PHP コードを書きます:
/*
ファイル: ccol.php - ConCurrent OnLine 統計
目的: 同時にオンライン閲覧する人の数をカウントするため
著者:Hunte、hunte@phpuser.com
変更日:2000-4-25
*/
$期間=1800;
「db.php」が必要です。
// 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サイトの訪問統計分析など、他の用途にも活用できます。