iliaa Mon Jan 12 17:48:59 2004 EDT Modified files: /php-src/ext/sqlite sess_sqlite.c Log: Fixed a bug that would cause the sqlite session database to grow endlessly. Index: php-src/ext/sqlite/sess_sqlite.c diff -u php-src/ext/sqlite/sess_sqlite.c:1.11 php-src/ext/sqlite/sess_sqlite.c:1.12 --- php-src/ext/sqlite/sess_sqlite.c:1.11 Thu Jan 8 03:17:29 2004 +++ php-src/ext/sqlite/sess_sqlite.c Mon Jan 12 17:48:58 2004 @@ -17,13 +17,14 @@ +----------------------------------------------------------------------+ */ -/* $Id: sess_sqlite.c,v 1.11 2004/01/08 08:17:29 andi Exp $ */ +/* $Id: sess_sqlite.c,v 1.12 2004/01/12 22:48:58 iliaa Exp $ */ #include "php.h" #if HAVE_PHP_SESSION #include "ext/session/php_session.h" +#include "ext/standard/php_lcg.h" #include <sqlite.h> #define SQLITE_RETVAL(__r) ((__r) == SQLITE_OK ? SUCCESS : FAILURE) #define PS_SQLITE_DATA sqlite *db = (sqlite*)PS_GET_MOD_DATA() @@ -173,7 +174,14 @@ rv = sqlite_exec_printf(db, "DELETE FROM session_data WHERE (%d - updated) > %d", NULL, NULL, NULL, t, maxlifetime); - + + /* because SQLite does not actually clear the deleted data from the database + * we need to occassionaly do so manually to prevent the sessions database + * from endlessly growing. + */ + if ((int) ((float) PS(gc_divisor) * PS(gc_divisor) * php_combined_lcg(TSRMLS_C)) < PS(gc_probability) { + rv = sqlite_exec_printf(db, "VACUUM", NULL, NULL, NULL); + } return SQLITE_RETVAL(rv); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php