私たちのサイトの構築方法のために、ajax アプローチを使用する必要がありました。私はjQueryを使用しているので、比較的簡単です。
これらの行は $(document).ready 関数に入りました。
fnShowImOnline();
setInterval('fnShowImOnline', 120000);
これはJavaScript関数です...
function fnShowImOnline() {
$.get('ajax/im_online.php');
}
そして、ここにPHPがあります
<?php
session_start();
if ((isset($_SESSION['user']))&&($_SESSION['authorized']=='authorized')) {
include('../includes/db.php');
db_connect();
mysql_query("UPDATE members SET last_checked_in = NOW() WHERE user_id = {$_SESSION['user']['user_id']}");
}
?>
カウントは単純な PHP/mySQL です。
// Members online.
$online_sql = "SELECT COUNT(*) FROM members where last_checked_in > DATE_SUB(NOW(), INTERVAL 5 MINUTE)";
$online_RS = mysql_query($online_sql);
$online_row = mysql_fetch_row($online_RS);
$online = $online_row[0];
数値を動的に更新する必要がある場合は、この少しの ajax が役に立ちます。
$.ajax({
url: 'ajax/members_online.php',
dataType: 'json',
success: function(response) {
if (!isNaN(response.total)) {
$('#OnlineTotal').html(response.total + " Total ");
$('#OnlineOnline').html(response.online + " Online Now");
}
}
})
これを PHP/mySQL に使用する
// Members online.
$online_sql = "SELECT COUNT(*) FROM members WHERE last_checked_in > DATE_SUB(NOW(), INTERVAL 5 MINUTE)";
$online_RS = mysql_query($online_sql);
$online_row = mysql_fetch_row($online_RS);
$online = $online_row[0];
// Members total.
$total_sql = "SELECT COUNT(*) FROM members";
$total_RS = mysql_query($total_sql);
$total_row = mysql_fetch_row($total_RS);
$total = $total_row[0];
$response = json_encode(array('total'=>$total,'online'=>$online));
echo($response);
これは私たちにとってうまく機能しています。