PHP_PHP チュートリアルでのユーザーのオンライン時間をカウントしようとする試み

WBOY
リリース: 2016-07-21 15:34:11
オリジナル
1022 人が閲覧しました

以下に、より一般的に使用されるメソッドの一部を示します:

まず、関連するデータ テーブル構造と 4 つのフィールドを紹介します:

コードをコピーします コードは次のとおりです:

uid : ユーザー ID
session_id: ユーザーのログイン後にシステムによって生成された session_id。PHP は session_id() 関数を使用して
login_time: ログイン時刻
logout_time: ログアウト時間

1. クライアントはサーバーに定期的にリクエストを送信します。実装方法は、ユーザーがログインした後のレコードに uid、session_id、login_time を挿入し、クライアント JS でタイマーを設定します。たとえば、ログアウトを更新する目的を達成するために 10 分ごとにサーバーにリクエストを送信します。もちろん、この間隔を短く設定するとデータの精度は高くなりますが、対応するシステム負荷は実際の状況に基づいて適切な値に設定できます。このメソッドは、Web ゲームで広く使用されています。Web ゲームのほとんどすべてのリクエストが Ajax リクエストであり、ページが更新されるとタイマーの値が失われるためです。これがこのメソッドの制限でもあります。
2. サーバーはスケジュールされたポーリング スクリプトを設定します。この方法は、サーバー側でスケジュール実行スクリプトを記述し、例えば5分に1回実行し、各セッションのsession_idがサーバー上に存在するかどうかをデータベース内のレコードに基づいて判断します。 、logout_time が存在しない場合はスキップされます。これによりオンライン時間を正確にカウントすることもできますが、サーバーを制御する必要があるという欠点があります。そうでないと、Linux システムでは crontab を介してタイミング スクリプトを設定でき、Windows システムではスケジュールされたタスクを介してこれを実行できます。仮想ホストを購入したばかりの場合、この方法も適していません。
3. ユーザーがアクティブになるたびにログアウト時間を更新します。このように、ユーザーが非アクティブであるかログアウトすると、ログアウト時刻がデータベースに自然に存在します。これは、この記事で焦点を当てている解決策でもあります。実装方法は以下の通りです。
まず、ユーザーが正常にログインした後、ユーザーの uid と session_id を記録し、現在時刻をログイン時刻として、現在時刻 + 600 秒をログアウト時刻として使用し、データベースに挿入します。
コードをコピーします コードは次のとおりです:

$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 session_id='$session_id'";

この方法の利点は、実装が比較的簡単であることです。比較的シンプルで、ほとんどの Web サイトに適用でき、追加のサーバー要件がなく、ユーザーのオンライン時間を正確にカウントすることもできます。
データベースの更新操作が増え、システムの負荷が増加するというデメリットもありますが、中小規模の Web サイトでは問題になりません。


http://www.bkjia.com/PHPjc/322457.html

www.bkjia.com

http://www.bkjia.com/PHPjc/322457.html技術記事以下に、より一般的に使用されるメソッドの一部を示します。 まず、関連するデータ テーブル構造、つまり 4 つのフィールドを紹介します。 次のようにコードをコピーします。 uidint(10): ユーザー ID session_idvarchar(40): use...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート