PHPでオンラインの人数を数える方法
統計|オンライン|オンライン人口
フォーラムで誰かがオンラインの人数を数える方法を尋ねました。私も何が最善の方法なのか分かりません。以下に当サイトの実装原則を記載させていただきましたので、ご参考までに。これは単なる私の方法であり、決して最善ではありません。専門家が私を修正してくれることを願っています。
実際、同時にオンラインの人数を正確にカウントすることは非現実的です。これは、HTTP プロトコルがステートレス プロトコルであるためです。クライアントがサーバーにリクエストを送信すると、ページが完全にロードされたときなど、セッションが終了すると、サーバーはすぐに新しい TCP/IP 接続を確立します。一般に、オンラインの人数は、HTTP プロトコルに基づく同時接続の数ではなく、一定期間内にサイトに同時にアクセスした人の数を指します。
まず、訪問者がどのように Web サイトにアクセスするかを見てみましょう。対象の Web サイトのアドレスをブラウザのアドレス バーに入力し、一定期間その Web サイトのページを閲覧し続けます。最後にブラウザを閉じるか、新しい URL を入力すると、閲覧が終了します。サーバー側では、訪問者がいつ到着したかを知ることができ、訪問者がいつページを閲覧しているかを知ることもできますが、いつ離れるかをどうやって知ることができるでしょうか? HTTP プロトコルはステートレスであるため、それを知る方法はありません。一般的には、訪問者がサイト上のページを最後に閲覧した時刻を記録することです。訪問者が特定の期間内に新しいアクションを行わなかった場合、その訪問者は去ったとみなされます。
上記の考えに基づくと、データベースはテキスト ファイルなどの他の方法より効率的であるため、データベースを使用するのが最善であると思います。以下の例では MySQL を使用していますが、他のタイプのデータベース システムでも簡単に使用できます。次に、すべてのページでこの PHP ファイルを呼び出してデータを更新し、オンラインの人数を表示します。ただし、疑問があります。人々が同時に訪問するのにどれくらい時間がかかりますか?一般的には 30 分、つまり 1800 秒です。具体的な時間は Web サイトの状況に応じて決定されます。この時間が長いほど、より多くの同時オンライン人数がカウントされます。このサイトは15分900秒です。訪問者を表す良い方法は、IP アドレスで表すことです。ダイヤルアップ インターネット アクセスの場合、同じ IP アドレスが割り当てられた 2 人のユーザーが短時間に同じ Web サイトを閲覧する可能性は非常に低いです。
まず、MySQL ツールを使用してテーブルを作成します。
CREATE TABLE ccol(
id integer not null auto_increment, #Record ID
ip char(15) not null, #訪問者の IP アドレス
dtstamp datetime not null, #最終アクセス時刻
uri char(255), #訪問者の要求された URI
主キー (id)
); 次に、次のように記述します。 PHP コード:
/*
ファイル: ccol.php - ConCurrent OnLine 統計
目的: 同時にオンライン閲覧している人の数をカウントします
作成者:Hunte、hunte@phpuser.com
更新: 2000-4-25
*/
$duration=1800;
$ccol->connect(); 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'); - >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))
//半分で調べます1 時間以内のレコードの場合、次の WHERE 句はオプションです。時間を超えたレコードは削除されています。
$ccol->next_record()
echo "オンラインの人数:", $ccol-> f( 'ccol');
$ccol->free_result();
使い方は?サイトのすべてのページでこのプログラムを呼び出します。例:
--index.php

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

この記事では、PowerQuery で複数の列をドラッグ アンド ドロップで並べ替える方法を説明します。さまざまなソースからデータをインポートする場合、列が希望の順序にならないことがよくあります。列の順序を変更すると、分析やレポートのニーズに合った論理的な順序で列を配置できるだけでなく、データの読みやすさが向上し、フィルタリング、並べ替え、計算の実行などのタスクが高速化されます。 Excelで複数の列を並べ替えるにはどうすればよいですか? Excel で列を再配置する方法はたくさんあります。列ヘッダーを選択し、目的の場所にドラッグするだけです。ただし、多くの列を含む大きなテーブルを扱う場合、このアプローチは面倒になる可能性があります。列をより効率的に再配置するには、拡張されたクエリ エディターを使用できます。クエリの強化

タイムスタンプは、グリニッジ標準時 1970 年 1 月 1 日 00:00:00 (北京時間 1970 年 1 月 1 日 08:00:00) から現在までの合計秒数を指します。運用環境には、MySQL 5.5/5.6/5.7 の 3 つのメジャー バージョンと、N 個のマイナー バージョンを含む、さまざまなバージョンの MySQL がデプロイされていますが、MySQL の上位互換性が低いため、同じ SQL でもバージョンが異なると動作が異なります。タイプをさまざまな角度から詳しく紹介します。タイムスタンプ データ アクセス MySQL の上記 3 つのメジャー バージョンでは、デフォルトのタイムスタンプ (Timestamp) タイプの値の範囲は「1970-01-0100:00:01&r」です。

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

ReactQuery データベース プラグイン: データのインポートとエクスポートを実装するためのメソッド、特定のコード サンプルが必要 フロントエンド開発で ReactQuery が広く適用されるようになり、ますます多くの開発者がデータ管理に ReactQuery を使用し始めています。実際の開発では、多くの場合、データをローカル ファイルにエクスポートしたり、ローカル ファイルからデータベースにデータをインポートしたりする必要があります。これらの機能をより便利に実装するには、ReactQuery データベース プラグインを使用できます。 ReactQuery データベース プラグインは一連のメソッドを提供します

Laravel コレクションの Where メソッドに関する実践ガイド Laravel フレームワークの開発中、コレクションは、データを操作するための豊富なメソッドを提供する非常に便利なデータ構造です。中でも、Where メソッドは、指定した条件に基づいてコレクション内の要素をフィルタリングできる、一般的に使用されるフィルタリング メソッドです。この記事では、Laravel コレクションでの Where メソッドの使用法を紹介し、特定のコード例を通じてその使用法を示します。 1. Whereメソッドの基本的な使い方

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code
