フォーラムで誰かがオンラインの人数を数える方法を尋ねました。私も何が最善の方法なのか分かりません。以下に当サイトの実装原則を記載させていただきましたので、ご参考までに。これは単なる私の方法であり、決して最善のものではありません。専門家が私を修正してくれることを願っています。
実際、同時にオンラインの人数を正確にカウントすることは非現実的です。これは、HTTP プロトコルがステートレス プロトコルであるためです。クライアントがサーバーにリクエストを送信すると、ページが完全にロードされたときなど、セッションが終了すると、サーバーはすぐに新しい TCP/IP 接続を確立します。一般に、オンラインの人数は、HTTP プロトコルに基づく同時接続の数ではなく、一定期間内にサイトに同時にアクセスした人の数を指します。
まず、訪問者がどのようにウェブサイトにアクセスするかを見てみましょう。対象の 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, #recorded ID
ip char(15) not null, #visitor's IP address