How would the online table be maintained if a user simply closes out the
browser without actually logging out properly? I'm not at all experienced
with sessions, but closing the browser should terminate the session,
correct? Bernain may want to delete from his online table every hour or so
to catch those people who have not properly logged out (assuming the "delete
from online..." query is only fired when they click on a "log out" button).

I'm not slagging Peter's recommendation. I was thinking this solution
through as well, but was a bit stuck when it came to users just closing
their browsers without logging out.

> -----Original Message-----
> From: Peter Beckman [mailto:[EMAIL PROTECTED]]
> Sent: Friday, January 03, 2003 2:32 PM
> To: Bernain, Fernando G.
> Cc: '[EMAIL PROTECTED]'
> Subject: Re: [PHP-DB] Users on line
> 
> 
> Create a new table named online:
> 
> id
> time (int unix timestamp)
> uid (int probably, user ID of user in question, relating to a 
> user info table?)
> sessid (char 32 I think)
> 
> When the user logs in, I assume you set the session.  Insert 
> a row with the
> current time (unix_timestamp(now()), User ID and the output 
> of session_id()
> in PHP.  This way you can run a query on that table at any 
> time in one of
> two ways.
> 
>  1. select count(id) from online where 
> time>=(unix_timestamp(now())-900)
> 
>     This will give you the number of people who at least 
> logged in in the
>     last 15 minutes.  This isn't very accurate though... so
> 
>  2. If not already, put sessions in your SQL table.  This way 
> you can run a
>     query like (and John Holmes, please feel free to clean up 
> my joins, i
>     suck at them):
> 
>     select count(*) from online,sessions where
>     online.sessid=sessions.sessid and
>     sessions.date>=(unix_timestamp(now())-900)
> 
>     This will give you the number of users who have done 
> anything on the
>     site in the last 15 minutes.  Change the 900 to 600 or 
> 300 for 10 or 5
>     minutes respectively.
> 
> Every week or so you'll want to "delete from online where time>=[some
> number here, unix_timestamp(now()) minus how long you want to 
> leave those
> entries there]".
> 
> Depending on how often you want to do this and how busy your 
> site is and
> how focused on performance you are, I'd advise running it 
> once per minute
> and every time someone logs in, rather than once per page 
> view, and put the
> values generated into a text file and read it in with readfile().
> 
> Peter
> 
> On Fri, 3 Jan 2003, Bernain, Fernando G. wrote:
> 
> > I'm working in an app that requires to know who are "on 
> line". When the user
> > login the app, I use session in order to storage de name 
> and login.  Its
> > posible to do this???
> >
> > Thanks!
> >
> > Fernando Bernain
> > Senior A
> > Business Process Outsourcing
> >
> > KPMG Argentina
> > Tel: 54 11 4316 5754
> > Fax: 54 11 4316 5734
> > [EMAIL PROTECTED]
> >
> >
> >
> >
> >
> > Email Disclaimer
> >
> > The information in this email is confidential and may be
> > legally privileged.
> > It is intended solely for the addressee.
> > Access to this email by anyone else is unauthorised.
> > If you are not the intended recipient, any disclosure,
> > copying, distribution
> > or any action taken or omitted to be taken in reliance
> > on it, is prohibited and may be unlawful.
> > When addressed to our clients any opinions or advice
> > contained in this email are subject to the terms and
> > conditions expressed in the governing KPMG client engagement
> > letter.
> >
> >
> > --
> > PHP Database Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> 
> --------------------------------------------------------------
> -------------
> Peter Beckman                                                 
>  Internet Guy
> [EMAIL PROTECTED]                             
> http://www.purplecow.com/
> --------------------------------------------------------------
> -------------
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to