changed: updated to the new ezc api, this with O(1) when looking for a specific ezc function
changed: sessions are deleted at the end of a request (and only a few sessions) other sessions will be deleted after a next request git-svn-id: svn://ttmath.org/publicrep/winix/trunk@684 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -119,16 +119,17 @@ return i->second;
|
||||
|
||||
|
||||
|
||||
void SessionContainer::DelFirstByTimeInterval(time_t interval, bool skip_remember_flag)
|
||||
size_t SessionContainer::DelFirstByTimeInterval(time_t interval, size_t how_many_max, bool skip_remember_flag)
|
||||
{
|
||||
IndexTime::iterator i = index_time.begin();
|
||||
IndexTime::iterator iold;
|
||||
time_t limit = std::time(0) - interval;
|
||||
Session * old_session = request->session;
|
||||
size_t deleted = 0;
|
||||
|
||||
while( i != index_time.end() && i->second->last_time < limit )
|
||||
while( i != index_time.end() && i->second->last_time < limit && deleted < how_many_max )
|
||||
{
|
||||
long id = i->second->id;
|
||||
//long id = i->second->id; // !! for logs (not used now)
|
||||
iold = i;
|
||||
++i; // incrementing before deleting old one
|
||||
|
||||
@@ -147,15 +148,22 @@ Session * old_session = request->session;
|
||||
index_time.erase(iold);
|
||||
table_size -= 1;
|
||||
request->session = 0;
|
||||
deleted += 1;
|
||||
|
||||
log << log3 << "SC: deleted index_time for session id: " << id << logend;
|
||||
log << log3 << "SC: deleted session, id: " << id << logend;
|
||||
//log << log3 << "SC: deleted index_time for session id: " << id << logend;
|
||||
//log << log3 << "SC: deleted session, id: " << id << logend;
|
||||
}
|
||||
|
||||
request->session = old_session;
|
||||
|
||||
return deleted;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void SessionContainer::DelFromIdIndex(SessionContainer::Iterator iter)
|
||||
{
|
||||
IndexId::iterator i;
|
||||
@@ -165,7 +173,7 @@ IndexId::iterator i;
|
||||
if( i->second == iter )
|
||||
{
|
||||
index_id.erase(i);
|
||||
log << log3 << "SC: deleted index_id for session id: " << iter->id << logend;
|
||||
//log << log3 << "SC: deleted index_id for session id: " << iter->id << logend;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -190,7 +198,8 @@ void SessionContainer::UpdateLastTime(SessionContainer::Iterator iter, time_t ne
|
||||
iter->last_time = new_time;
|
||||
iter->tm_last_time = Time(new_time);
|
||||
|
||||
log << log3 << "SC: last time and the time index for session id: " << iter->id << " updated" << logend;
|
||||
//log << log3 << "SC: last time and the time index for session id: " << iter->id << " updated" << logend;
|
||||
log << log3 << "SC: last time for session id: " << iter->id << " updated" << logend;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user