From: Sascha Schumann Date: Thu, 3 Oct 2002 06:45:15 +0000 (+0000) Subject: Make the interpretation of gc_probability configurable by adding X-Git-Tag: php-4.3.0pre1~278 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=13f5db1b67f9434885121c3d5dd628b909726fb9;p=php Make the interpretation of gc_probability configurable by adding session.gc_dividend. The probability of running gc on each request is then gc_probability/gc_dividend. --- diff --git a/ext/session/php_session.h b/ext/session/php_session.h index 99da8efbbe..2742b56b80 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -105,6 +105,7 @@ typedef struct _php_ps_globals { void *mod_data; php_session_status session_status; long gc_probability; + long gc_dividend; long gc_maxlifetime; int module_number; long cache_expire; diff --git a/ext/session/session.c b/ext/session/session.c index 39a025a75b..d717fb3008 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -128,6 +128,7 @@ PHP_INI_BEGIN() PHP_INI_ENTRY("session.save_handler", "files", PHP_INI_ALL, OnUpdateSaveHandler) STD_PHP_INI_BOOLEAN("session.auto_start", "0", PHP_INI_ALL, OnUpdateBool, auto_start, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.gc_probability", "1", PHP_INI_ALL, OnUpdateInt, gc_probability, php_ps_globals, ps_globals) + STD_PHP_INI_ENTRY("session.gc_dividend", "100", PHP_INI_ALL, OnUpdateInt, gc_dividend, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.gc_maxlifetime", "1440", PHP_INI_ALL, OnUpdateInt, gc_maxlifetime, php_ps_globals, ps_globals) PHP_INI_ENTRY("session.serialize_handler", "php", PHP_INI_ALL, OnUpdateSerializer) STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateInt, cookie_lifetime, php_ps_globals, ps_globals) @@ -1035,7 +1036,7 @@ PHPAPI void php_session_start(TSRMLS_D) if (PS(mod_data) && PS(gc_probability) > 0) { int nrdels = -1; - nrand = (int) (100.0*php_combined_lcg(TSRMLS_C)); + nrand = (int) ((float) PS(gc_dividend) * php_combined_lcg(TSRMLS_C)); if (nrand < PS(gc_probability)) { PS(mod)->gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels TSRMLS_CC); #if 0