Again, a person who is idle for more than x number of minutes (1-15 in my mind) is no longer online. Do they need to be logged out? On every page you could have a javascript timer which logs the user out if they are idle for more than x minutes in addition to the onunload="logoutfunction()" in the body tag in Javascript to log them out.
// This assumes that sessions.gc (garbage collection) is on and that your // session timeout is set to whatever you want sessions to be limited to function number_of_open_sessions() { $r = mysql_query("select count(*) as c from php.phpsessions"); $x = mysql_fetch_array($r); return $x['c']; } // or if a file system function number_of_open_sessions() { $x = ini_get("session.save_path"); // look for files in this dir that start with sess_ // count them // return the number of files that match. } Peter On Fri, 3 Jan 2003, Bernain, Fernando G. wrote: > I'm thinking in something similar to ICQ or MSN. This is an app for a few > number of users (less than 50) but they need to know who are online when > they are working in the app too!!! Maybe I can use the table online and > insert then name of the user when he login the app... but I still have the > problem of the logout... > > I was looking for something (like a function?) in apache or php who tells me > the "open sessions" at a moment... > > Fernando Bernain > Senior A > Business Process Outsourcing > > KPMG Argentina > Tel: 54 11 4316 5754 > Fax: 54 11 4316 5734 > [EMAIL PROTECTED] > > > > > -----Original Message----- > From: Peter Beckman [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 03, 2003 4:49 PM > To: Hutchins, Richard > Cc: Bernain, Fernando G.; '[EMAIL PROTECTED]' > Subject: RE: [PHP-DB] Users on line > > > I agree; it'd be nice if there was some sort of code that'd be executed > when someone closed their browser. There is the javascript "on_exit()" or > something where the user, when they leave a domain, is executed. However, > this only works if they click off the site, not if they close their > browser. Plus if they go to another site and come back within 5/10/15 > minutes, are they still considered "logged in?" > > It's fairly impossible to keep track of when users are or are not using the > site that is not really complex. What if they are reading an article, run > to the restroom, finish reading the article and then click on another page? > I figure they are "idle" after 15 minutes. If they continue to surf the > site in an hour or two, their session will be updated (if your sessions > last long enough, or if not they'll probably be automatically re-logged in > which case they'd be updated/re-inserted in the online table), and will > once again be counted as a person online. > > One example is forcing people to be logged out after 10 minutes of > inactivity. Bank of America does this, most likely using javascript. > However, if yahoo! did this when I was reading my mail and I stepped away, > I'd be annoyed. Most sites allow you to be logged in forever ("Remember > me") so forcing people to log out just to be able to count who is online > seems silly. > > If you just want to keep track of how many people are logged in, I'd just > say that logged in is defined as having an active logged in session that > was active in the last 5/10/15 minutes. I'm almost positive that method is > how most web sites determine time online. > > Peter > > On Fri, 3 Jan 2003, Hutchins, Richard wrote: > > > 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 > > > > --------------------------------------------------------------------------- > 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 > --------------------------------------------------------------------------- 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