ホームページ >バックエンド開発 >PHPチュートリアル >オンライン北京時間 PHP でユーザーのオンライン時間をカウントしようとする試み
以下に、より一般的に使用されるメソッドの一部を示します。
まず、関連するデータ テーブル構造と 4 つのフィールドを紹介します。
コードをコピーします コードは次のとおりです。 : ユーザー ID
session_idlogin_time
logout_time
1. クライアントはサーバーに定期的にリクエストを送信します。実装方法は、ユーザーがログインした後のレコードにuid、session_id、login_timeを挿入し、クライアントjsでタイマーを設定します。たとえば、ログアウト時刻を更新する目的を達成するために10分ごとにサーバーにリクエストを送信します。もちろん、間隔を短く設定するほどデータの精度は高くなりますが、それに応じてシステムへの負荷が高くなります。これは実際の状況に基づいて適切な値に設定できます。このメソッドは、Web ゲームで広く使用されています。Web ゲームのほとんどすべてのリクエストが Ajax リクエストであり、ページが更新されるとタイマーの値が失われるためです。これがこのメソッドの制限でもあります。
2. サーバーはスケジュールされたポーリング スクリプトを設定します。この方法は、サーバー側でスケジュール実行スクリプトを記述し、例えば5分に1回実行し、各セッションのsession_idがサーバー上に存在するかどうかをデータベース内のレコードに基づいて判断します。 、logout_time が存在しない場合はスキップされます。これによりオンライン時間を正確にカウントすることもできますが、サーバーを制御する必要があるという欠点があります。そうでないと、Linux システムでは crontab を介してタイミング スクリプトを設定でき、Windows システムではスケジュールされたタスクを介してこれを実行できます。仮想ホストを購入したばかりの場合、この方法も適していません。
コードは次のとおりです:$uid = $_SESSION['uid'] = $info['id'];
$session_id = $_SESSION['session_id'] = session_id (); $login_time = time()+600;
$sql = "メンバーログイン (uid,session_id,login_time,logout_time) 値に挿入します($uid,'$session_id',$login_time) ,$logout_time) ";
mysql_query($sql);
その後、ユーザーが行動するたび、つまりページをクリックするたびに、セッションが存在する場合、つまりログインしている場合、ユーザーのログアウト時間
コードは次のとおりです: if($_SESSION['uid']){ $uid = $_SESSION['uid'];
$session_id = $_SESSION[ 'session_id'];$logout_time = time()+600 ;
$sql = "UPDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND sessi
mysql_query($sql);
} これの利点この方法は実装が比較的簡単で、大規模な Web サイトに適用できることです。ほとんどの Web サイトでは追加のサーバーが必要なく、ユーザーのオンライン時間を正確にカウントできます。欠点は、データベースの更新操作が増加し、システム負荷が増加することも明らかです。 、ただし、中小規模の Web サイトの質問には使用しないでください。
上記は、オンライン北京時間でのユーザーのオンライン時間を PHP でカウントする試みを紹介しています。オンライン北京時間の内容も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。