リアルタイムチャットシステムは、最新のソーシャルプラットフォームの重要な部分になりました。 PHPは最も人気のあるWebプログラミング言語の1つであるため、この記事では、PHPを使用して、リアルタイムチャットシステムでオンラインステータス表示およびオンラインユーザー統計機能を実現する方法を紹介します。 PHPのセッションメカニズムを介してオンラインステータスを管理する方法と、タイマーを使用してオンラインユーザーをカウントする方法を詳細に説明します。
オンラインステータス表示は、チャットシステムの重要なインジケーターであり、ユーザーがオンラインであるかどうかを反映できます。チャットシステムのインターフェースでは、ユーザーは通常、通信するオブジェクトがオンラインであるかどうかを確認し、すぐに返信を受信できるかどうかを確認したいと考えています。オンラインステータス表示を実現するには、PHPのセッションメカニズムを使用する必要があります。
セッションは、ユーザー情報を保存するためにWebプログラミングで使用されるプロトコルです。セッションを通じて、Webアプリケーションは、ユーザーのブラウザCookieにデータを保存するのではなく、ユーザー関連のデータをサーバー側に保存できます。このようにして、セッションは複数のページ間で情報を共有し、ユーザーのセッション状態を効果的に管理できます。
ユーザーがチャットシステムにログインすると、サーバーはセッションを開始し、ユーザーのログイン時間を記録します。ユーザーがリクエストを行うたびに、システムはセッションの有効期限が切れるかどうかを確認します。セッションの有効期限が切れた場合、ユーザーはオフラインでマークされ、そのオンラインステータスはデータベースから削除されます。セッションの有効期限が切れていない場合、システムはユーザーのオンラインステータスを更新して、オンラインステータスがリアルタイムで反映されるようにします。
以下は、オンラインステータス表示機能を実装するサンプルコードです。
session_start(); //セッションを始めるします
if(isset($ _ session ['last_activity'])&&(time() - $ _session ['last_activity']> 60)){
// user offline $ user_id = $ _session ['user_id'];
//ユーザーステータス$ query = "ユーザー_online`から" delete "user_id` = '$ user_id'";
$ result = mysqli_query($ link、$ query);
//セッションをクリアします
session_unset();
session_destroy();
} それ以外 {
//ユーザーオンライン$ user_id = $ _session ['user_id'];
//ユーザーステータス$ queryを更新します= "upprod` users_online` set `last_activity` = now()where` user_id` = '$ user_id' ";
$ result = mysqli_query($ link、$ query);
}
オンラインユーザーの統計は、チャットシステムのもう1つの重要な機能です。オンラインユーザーカウントは、PHPのタイマーメカニズムに依存して、オンラインユーザーの数を定期的に照会します。
タイマーは、特定の時間間隔内でコードを実行できるメカニズムです。 PHPのタイマーにより、開発者はポーリング間隔を設定することにより、事前に決められた時点でスクリプト操作を自動的に実行できます。
PHPタイマーを使用してオンラインユーザーテーブルを定期的に投票し、現在オンラインでユーザーの数を数えることができます。以下は、オンラインユーザーカウントを実装するハートビートタイマーのサンプルコードです。
set_time_limit(0); // phpタイマーを使用して(true){
$ query = "count(*)を選択するcount(*)として` users_online`からonline_users "last_activity`> date_sub(now()、interval 1ポイント)";
$ result = mysqli_query($ link、$ query);
$ online_users = mysqli_fetch_array($ result、mysqli_assoc)['online_users'];
エコー「オンラインの今の人数:」。 $ online_users;
ob_flush();
フラッシュ();
寝る(10); // 102番ごとにクエリ}
この例では、無限のループを使用して、ユーザーのオンラインテーブルを継続的に投票します。 ob_flush()およびflush()関数を介して、オンラインユーザーの数はリアルタイムで出力されます。このプログラムは、ポーリング間隔が妥当であることを確認するために、10秒ごとに一時停止されます。
オンラインステータスディスプレイとオンラインユーザーカウントは、すべてのチャットシステムに不可欠な機能です。この記事では、PHPのセッションメカニズムを使用して、ユーザーのオンラインステータス表示を実現する方法と、タイマーを介して現在のオンラインユーザー数をカウントする方法を紹介します。これらのテクノロジーを通じて、開発者はユーザーのオンラインステータスを効率的に管理し、ユーザーにリアルタイムのフィードバックを提供できます。