The best you can do is try to use javascript to catch an event of the person
leaving the page (http://api.jquery.com/unload/). the problem as that link
suggests is that its also browser dependant. Some browsers implement only
parts of that event. For example, some browsers do not fire the unload event
on browser closing but do on changing url in the tab etc. Its a very tricky
thing to do.

The best way I can think of is have a periodic ajax request fire every 1
minute or or so. This ajax event updates the users "last active" time. All
other users IM client can then update the currently online people to be
those whose last active time was updated in the last minute. In other words,
if I am a user who has a list of currently logged in people, and my friend
has his browser open, he sees me online. My browser is regularly sending the
a small ajax request to the server telling it that at time now I am online.
My friends browser checks to see who is online every minute as well. I close
my browser and now my last active time is not being changed. My friends
browser gets the list of people online and sees that my last active time is
now longer than a minute ago therefore I must be offline.

On Tue, Jan 18, 2011 at 8:19 AM, Srivatsa Prasad <[email protected]>wrote:

> Hi,
>
> Thank you for the response.
>
> The scenario u mentioned below, I see one issue, which cannot be handled.
>
> I think of using the database to see who are all the logged in users, i do
> it at the time when they log-in. I can mark them as logged out if they log
> out,
>
> The problems i foresee are,
> 1 The user session doesn't expire since the page makes a request in a
> certain interval. I don't mind if the session doesn't expire.
> 2 The other issue is if the user closes the browser or the user losses
> connectivity, i am not sure how to handle this situation , how to notify
> other users that an other user has logged out ?
>
> If u could give me some idea on the 2nd issue, i will take it further .
>
>
>
>
>
>
> On Mon, Jan 17, 2011 at 5:50 PM, Gareth McCumskey <[email protected]>wrote:
>
>> This is very commonly asked and the simple answer is .... its rather
>> difficult.
>>
>> Its difficult because when someone logs into an application, this fact is
>> stored server-side where all the PHP code exists. Lets consider a scenario.
>> You have an application to which people need to log into. Your session
>> timeout (i.e. how long you allow someone to stay logged in with no
>> interaction) is set to 30 minutes. Someone comes along and logs in. When he
>> logs in you can record the exact time he logged in. Everytime this user
>> accesses a page that calls your application you can update that timestamp to
>> confirm him as still online. But then the requests (i.e. clicking of links,
>> form submission, etc) stops, and 30 minutes later the session timesout.
>>
>> The problem? What if he had closed his browser and not clicked the logout
>> link? Was he actually still sitting in front of his computer when his
>> session ended? At what time in those last 30 minutes of inactivity was he
>> still there? When did he close the browser?
>>
>> You don't know. Closing the browser is something you cannot determine,
>> even using javascript.
>>
>> The only way to reliably do this is to have some ajax sitting in the
>> application that sends a request every few minutes that can verify that the
>> person is still there and his browser is still open. The downside is that
>> his session will never timeout on its own (as each little ajax request will
>> reset the internal PHP session timer) and you will have to build your own
>> session timeout mechanism from scratch to force a "logout" when it does
>> timeout.
>>
>> On Mon, Jan 17, 2011 at 1:49 PM, Srivatsa Prasad 
>> <[email protected]>wrote:
>>
>>> Hi All,
>>>
>>> I am using symfony 1.4 and doctrine.
>>> I am trying to build a small chat app so,
>>> I want to know who are all the user of my app logged into to at now.
>>>
>>> --
>>> Thanks & Regards
>>> Srivatsa
>>>
>>> --
>>> If you want to report a vulnerability issue on symfony, please send it to
>>> security at symfony-project.com
>>>
>>> You received this message because you are subscribed to the Google
>>> Groups "symfony users" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]<symfony-users%[email protected]>
>>> For more options, visit this group at
>>> http://groups.google.com/group/symfony-users?hl=en
>>>
>>
>>
>>
>> --
>> Gareth McCumskey
>> http://garethmccumskey.blogspot.com
>> twitter: @garethmcc
>> identi.ca: @garethmcc
>>
>>  --
>> If you want to report a vulnerability issue on symfony, please send it to
>> security at symfony-project.com
>>
>> You received this message because you are subscribed to the Google
>> Groups "symfony users" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]<symfony-users%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/group/symfony-users?hl=en
>>
>
>
>
> --
> Thanks & Regards
> Srivatsa
>
> --
> If you want to report a vulnerability issue on symfony, please send it to
> security at symfony-project.com
>
> You received this message because you are subscribed to the Google
> Groups "symfony users" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<symfony-users%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/symfony-users?hl=en
>



-- 
Gareth McCumskey
http://garethmccumskey.blogspot.com
twitter: @garethmcc
identi.ca: @garethmcc

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to