リアルタイムチャットシステムは、最新のソーシャルプラットフォームの重要な部分になりました。 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のセッションメカニズムを使用して、ユーザーのオンラインステータス表示を実現する方法と、タイマーを介して現在のオンラインユーザー数をカウントする方法を紹介します。これらのテクノロジーを通じて、開発者はユーザーのオンラインステータスを効率的に管理し、ユーザーにリアルタイムのフィードバックを提供できます。