2012-01-18 3 views
1

私は、mySQLデータベースを使用してphpを実行しているWebサイトを持っています。サイトにアクセスしたすべての訪問者に対して、過去5分間のユーザーセッションを別のテーブルに記録します。ページリロードなしで変更される動的カウンタ

ページをリロードせずにアクティブなセッションの量を変更する動的カウンターを作成するにはどうすればいいですか?つまり、私がウェブサイトにいて15人が来たら、 。

答えて

1

非常に基本的なケースでは、AJAX経由でサーバースクリプトをポーリングできます。

// Poll the server each 60 seconds 
window.setInterval(function() { 
    $.getJSON('/online_users.php', function(data) { 
     // Here the data JSON returned by a PHP script 
     // e.g. data.count - count of sessions online 
     // data.users - could be array of user objects, etc 
     $('#counter').text(data.count); // Update some DOM element with new number 
    }); 
}, 60000); 

とサーバ側online_users.php

<?php 

// connect to DB, perform all necessary operations 
// output needed info in JSON format 

$users = array(
    array('username' => 'Tomas', 'id' => 234), 
    array('username' => 'Jassy', 'id' => 42) 
); 
$count = count($users); 

header('Content-type: application/json'); 
die(json_encode(array(
    'count' => $count, 
    'users' => $users 
))); 
+0

本当にありがとうございましたそのPHPスクリプトは、オンラインユーザ数、それらのユーザー名などのようないくつかの必要な情報と例のjavascriptので、一部を反応するだろう。私はあなたが提供したコードでこれを試しましたが、何も出力されていません。私はそれをもう少し詳しく調べなければならない。ただ1つの質問..私はそれを表示するためにカウントをエコーする必要はありません?ありがとう –

+0

私が提供したコードはうまく動作します。ちょうど近づく。もちろん、レスポンスとして何かを出力するPHPスクリプトが必要です。 'echo'、' die'、 'print'などです。数字だけが必要な場合は' echo 25; 'や' die(25) 'に変更するだけです。 – dfsq

+0

間隔を1分未満に変更することもできます。なぜなら、1分が最初に通過しなければならないため、出力がなかったからかもしれません。 – dfsq

関連する問題