phpはユーザーのオンライン時間統計の詳細を実現します。


まず、関連するデータテーブル構造を紹介します。4つのフィールド:コードは以下の通りです。
 
uid<int(10)> : id
session_id<varchar(40)> : session_id,PHP session_id()
login_time<int(10)> :
logout_time<int(10)> :
、クライアントタイミング送信要求はサーバ端に送信されます。実現方法はユーザー登録後、uid,session_をID,ロゴtimeはレコードを挿入して、クライアントjsでタイマーを設定します。例えば10分ごとにサーバー端に要求を送信して、ログイン時間を更新する目的を達成します。もちろんこの間隔が短いほど、データは正確になるかもしれませんが、システムの負荷も高くなります。これは実際の状況に応じて適切な値を設定することができます。この方法はwebgameに広く使われています。webgameのほとんどの要求はajax要求であり、ページを更新する必要はなく、一度ページを更新すると、このタイマーは価値を失います。これもこの方法の限界です。2、サービスはタイミングポーリングのスクリプトを設定します。この方法は、サーバ端に5分に1回のようなタイミングでスクリプトを作成し、データベース内のレコードからセッションごとのセッションセッションセッションセッションセッションのセッションセッションセッションセッションセッションセッションセッションセッションを判断する。IDはまだサーバに存在していますか?存在すればロゴアウトを更新します。タイムは、存在しないならスキップします。このようにしても比較的正確にオンライン時間を統計することができますが、欠点はサーバーのコントロールが必要です。そうでないとタイミングスクリプトが設定できません。linuxシステムはcrontabを通じて実現できます。windowsシステムは計画的な任務を通じて完成できます。もしあなたが仮想ホストを買うだけなら、この方法もあなたに合わないです。3、ユーザーが活動するたびにログイン時間を更新します。このようにユーザが活動しない、または退出した時に、時間が自然にデータベースに存在します。これも本文で重点的に検討する方案です。以下、実現方法を示します。まず、ユーザー登録が成功したら、そのuid、session_を記録します。IDは、現在の時間を登録時間として、現在600 sを登録時間として、データベースに挿入します。コードは以下の通りです。
 
$uid = $_SESSION[uid] = $info[id];
$session_id = $_SESSION[session_id] = session_id();
$login_time = time();
$logout_time = time() 600;
$sql = "INSERT INTO member_login (uid,session_id,login_time,logout_time) values($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";
mysql_query($sql);
}
この方法の利点は比較的簡単で、ほとんどのウェブサイトに適用できます。また、ユーザーのオンライン時間を比較的正確に統計することもできる。欠点も明らかで、データベースの更新操作を増やして、システムの負荷を増やしましたが、中小サイトにとっては問題ではないはずです。