Edit report at https://bugs.php.net/bug.php?id=20650&edit=1
ID: 20650 Updated by: [email protected] Reported by: andreas dot birrer at ag dot ch Summary: Change of Read($sess_id) to ($sess_id, $maxlifetime) -Status: Open +Status: Wont fix Type: Feature/Change Request Package: Session related PHP Version: 4.2.2 Block user comment: N Private report: N New Comment: You need to lock data, so that the date may not be deleted and/or can stay consistent. Previous Comments: ------------------------------------------------------------------------ [2002-11-26 09:43:47] andreas dot birrer at ag dot ch If I install a user save handler class e.g. MySqlSessionHandler with methods Read, Write, GC etc. MySqlSessionHandler::Read($sess_id) is always called before MySqlSessionHandler::GC($maxlifetime) This has the problem, that a session is read, which potentially would be garbage collected. Therefore it would be nice to get the $maxlifetime parameter also in Read e.g. Read($sess_id, $maxlifetime) This allows to return an empty session if it has timeouted. For Clarification here are two Methods GC and Read with $lifetime information function Read($sess_id, $maxlifetime) { // beware of timouted sessions not yet gced $time_stamp= time(); $removeDate= date("YmdHis", ($time_stamp - $maxlifetime)); $search_query= "SELECT * FROM $_session_table WHERE (session_id = '$sess_id') and (last_accessed >= $removeDate)"; $result= @ mysql_query($search_query, $_connection); if(!$result) { // No session found - return an empty string return ""; } else { // Found a session - return the serialized string $row = mysql_fetch_array($result); return $row["session_variable"]; } } function GC($max_lifetime) { global $_connection; global $_session_table; $time_stamp= time(); $removeDate= date("YmdHis", ($time_stamp - $max_lifetime)); $delete_query = "DELETE FROM $_session_table WHERE last_accessed < $removeDate"; $result = @mysql_query($delete_query,$_connection); return true; } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=20650&edit=1
