2011-01-21 10 views
0

私はオンラインユーザーを特定する必要がありますオンライン上の問題 - PHPでチャット

条件は、ユーザーがウィンドウを閉じると、オンラインリストから自動的に削除されます。

リストはセッション値のベースで生成されています。

いずれか.........ロジックだ

+1

ウィンドウが閉じたことを確実に伝えることはできません。あなたは、クライアントがあなたにHTTP要求の送信を停止したことだけを知っています。どのように対処したいのかはあなた次第ですが、どのように対処するかにかかわらず、何らかのタイムアウトを実装しようとしています。 –

答えて

0
<script type="text/javascript"> 
window.onclose = function() 
{ 
    // use jquery to make an ajax post to your chats controller, telling it someone has signed off. 
    // CURRENT_USER_ID will have to be passed from your application to JS, or you could try to read your session cookie there...maybe 
    $.post('/chats/signed_off', {user_id: CURRENT_USER_ID}); 
} 
</script> 

私を助けてください。この実装は、アプリケーションに固有のものであり、これについてはわかりません。

+0

oncloseは動作していません – sibiraj

+0

ご回答ありがとうございます – sibiraj

3

クローズウィンドウイベントにフラグを格納するのが困難です。ユーザーがブラウザを閉じてシステムを直接シャットダウンするとどうなりますか?

ユーザーは何らかのアクティビティ(ページの更新も含む)が行われるたびにデータベースにunixタイムスタンプを保存することで、ほぼ同じことを実現できます。

ユーザーがオンラインになっているかどうかを確認するには、このタイムスタンプにある程度の時間を加え、現在のタイムスタンプと値を比較します。

たとえば、過去10分間に何らかのアクティビティがあった場合、ユーザーをオンラインとみなすことを決定します。

$online = ($last_active_time + 600 > time()) ? True : False; 
+0

ここではたくさんの例があります。http://www.google.com.au/search?q=users+online+php+session – Chaoley

+0

お返事ありがとうございます。私はそれを試してみる.......... – sibiraj

+0

+1これはより良いアイデアであり、実際のチャットスクリプトがそれをどのように行うのか、アクティビティのポーリングです。 – scragz

関連する問題