Re: Automatic logoff

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/1/27 listread <listread@xxxxxxx>:
> Chris,
>
> Yes, I can see how your suggestion would be good for approximating the
> length of a visit, but my issue is more specific and technical...
>
> We will have users updating database records.  We want to lock a record
> while it is being worked on and release it once the user is finished or
> otherwise leaves the site.
>
> That's why we want a graceful exit.
>
> Maybe I should start a new thread about locking db records?
>
> - Ron
>
> On 1/26/2010 4:03 PM, Chris wrote:
>>
>> listread wrote:
>>>
>>> Bruno,
>>>
>>> Thanks for the heads up on the php configuration.  I'll check that out.
>>>
>>> We also need to write some data to a database, things like logout time.
>>>  That means running a script for some other php code.
>>
>> There are probably a number of situations where the onUnload thing won't
>> work including browser crashes, some browsers may not support it, will it
>> work if you have multiple browser tabs open and close one (something you'll
>> have to research) etc, so be aware that you're not going to get this 100%
>> right.
>>
>> If you just want the timing, I'd do it the other way.
>>
>> Each time their session is checked (on page load), update the "end" time.
>> In db terms:
>>
>> update session set logout_time=NOW() where session_id='X';
>>
>> That way you're always going to get at least an idea of how long their
>> session lasts but you won't get "reading time" on the page (ie it takes me 2
>> mins to read something on the page, the logout_time will be 2 minutes before
>> I actually close it).
>>
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

The technique I've used in the past is semaphore locking, where the
semaphore contains the session and the expected expiry time.

Follow this.

User a starts the process of editing a record.
Set the semaphore where there is :
  a - no existing semaphore - no ongoing edits.
  b - the semaphore's session is the same - repeat edits by this user
in the same session (expired or otherwise).
  c - the semaphore has expired - the other user simply took too long.

If the semaphore cannot be set it will be because of :
  d - Different non expired session - someone else is editing the record.

When a user saves the row, you just remove the semaphore.

The semaphores could be in a separate table (rather than on the record itself).

Different tables have different number of columns so take different
amounts of time to edit, so each table would have a different amount
of time from edit to expiry.

An entry on a lookup table (just a description) should, in the main,
be completed within 30 seconds.

But a detail line for a purchase order may take several minutes.

You'll have to tune this to your own needs.

-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

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



[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux