0

私のウェブサイトのユーザーは友達を持つことができ、友達はお互いにチャットできます。ステータスをオンライン、離席中、ビジーに設定することもできます。

ユーザーが Web サイトにアクセスしていない場合は、ステータスをオフラインに設定する必要があります。これを行う最善の方法は、定期的に AJAX リクエストをサーバーに送信し、サーバーがこれらのメッセージの受信を停止した場合にステータスを自動的にオフラインに設定することだと思います。

しかし、これらのメッセージを送信するのに適切な間隔はどれくらいでしょうか? 5秒?1分?

Webサーバーの能力に本当に依存している場合、PHPで確認する方法はありますか? よく使用される Web サーバー機能の間隔の例は?

4

2 に答える 2

2

これは、コーディングの問題というよりも、実際にはユーザビリティ/期待の問題です。サーバーの負荷がそれほど高くない場合、これらは目立たないでしょう。5秒ごとにチェックする必要があるとは思えませんが、特にユーザー数が限られている個人的なサイトの場合は、おそらく実行可能です。高負荷状態では、おそらくそれをかなり高くするでしょう。

于 2013-03-12T20:24:18.967 に答える
2

これを使用することを検討します >> http://www.bedroomlan.org/coding/detecting-%E2%80%98idle%E2%80%99-and-%E2%80%98away%E2%80%99-timeouts -ジャバスクリプト

次に、以下を変更します。

setIdleTimeout(2000); // 2 seconds
setAwayTimeout(4000); // 4 seconds
document.onIdle = function() {$('#div_idle').css('opacity', '1');}
document.onAway = function() {$('#div_away').css('opacity', '1');}
document.onBack = function(isIdle, isAway) {
    if (isIdle) $('#div_idle').css('opacity', '0.2');
    if (isAway) $('#div_away').css('opacity', '0.2');
}

次のようなものに:

setIdleTimeout(120000); // Make these two 
setAwayTimeout(360000); // a lot longer
document.onIdle = function() {
    // your ajax calls for when they go
}
document.onAway = function() {
    // code here to maybe log them out or what ever you wish to do via ajax.
}
document.onBack = function(isIdle, isAway) {
    // code here for when they return
}

このようにして、リクエストを減らします。

クイック編集:

ブラウザを閉じるときにログアウトするには、jQuery .unload() を使用します。

$(window).unload(function() {
  // ajax call when they just go, like they don't even care!
});
于 2013-03-12T20:22:30.313 に答える