Total Site Users

Discussion in 'PHP' started by FishSword, Sep 11, 2011.

  1. #1
    Hiya! ;),

    I'm currently working on a script that will allow me to track the total users on my website, and how many of these user are logged in members, or guests.

    I need to be able to find out the total users, total logged in, and total guests within the last 15 minutes, and the total users, total logged in, and total guests for today.

    Ideally, I would like to user only one table for this, and would also like to group together records in the database that have the same users_id and ip_address, as there's not much point in storing this more than once.

    I currently have a table that contains the following fields.

    sid - Stores the users session ID.
    user_id - Stores the user id of a logged in user. 0 is stored if the user is a guest.
    ip_address - Stores the IP address of the user.
    last_updated - Stores a timestamp of when the user was last active.

    I look forward to reading your responses ;)

    Cheers! ;)
     
    FishSword, Sep 11, 2011 IP
  2. sarahk

    sarahk iTamer Staff

    Messages:
    28,899
    Likes Received:
    4,555
    Best Answers:
    123
    Trophy Points:
    665
    #2
    That looks like it'll do it.

    Get the script to delete records older than an hour but to give counts where the timestamp is <15 minutes.

    Which bit are you getting stuck on?
     
    sarahk, Sep 11, 2011 IP
  3. JohnnySchultz

    JohnnySchultz Peon

    Messages:
    277
    Likes Received:
    4
    Best Answers:
    7
    Trophy Points:
    0
    #3
    i think you need to have execute these queries out if it..

    on the last 15minutes:
    
    # total users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE TIMESTAMP(NOW())-TIMESTAMP(`last_updated`) <= 900; #900 is 15 minuties in seconds
    # total logged-in users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE TIMESTAMP(NOW())-TIMESTAMP(`last_updated`) <= 900 AND `user_id` != 0;
    # total guest users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE TIMESTAMP(NOW())-TIMESTAMP(`last_updated`) <= 900 AND `user_id` = 0;
    
    Code (markup):
    today:
    
    # total users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE DATE(NOW())=DATE(`last_updated`);
    # total logged-in users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE DATE(NOW())=DATE(`last_updated`) AND `user_id` != 0;
    # total guest users
    SELECT COUNT(*) ctr FROM `the_sessions_table` WHERE DATE(NOW())=DATE(`last_updated`) AND `user_id` = 0;
    
    Code (markup):
     
    JohnnySchultz, Sep 12, 2011 IP