diff options
author | Yasuo Ohgaki <yohgaki@php.net> | 2016-09-01 05:54:55 +0900 |
---|---|---|
committer | Yasuo Ohgaki <yohgaki@php.net> | 2016-09-01 05:54:55 +0900 |
commit | 355c7e7d1cdc180d368c6214ea7605443fc88c92 (patch) | |
tree | e8f23cf72d429a8f1f71a7cae4f27419622e6319 | |
parent | 663f1c8fb08ba51a00d7d8ed6261916c6fc8d5df (diff) | |
download | php-git-355c7e7d1cdc180d368c6214ea7605443fc88c92.tar.gz |
Revert "Implement RFC Add session_gc() https://wiki.php.net/rfc/session-gc"
This reverts commit 1cf179e4150308d8217d9517408ca5e22b5d607f.
-rw-r--r-- | ext/session/mod_files.c | 4 | ||||
-rw-r--r-- | ext/session/mod_mm.c | 2 | ||||
-rw-r--r-- | ext/session/mod_user.c | 13 | ||||
-rw-r--r-- | ext/session/mod_user_class.c | 7 | ||||
-rw-r--r-- | ext/session/php_session.h | 6 | ||||
-rw-r--r-- | ext/session/session.c | 47 |
6 files changed, 17 insertions, 62 deletions
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c index 24f70b6c4b..7cb99fabcc 100644 --- a/ext/session/mod_files.c +++ b/ext/session/mod_files.c @@ -643,11 +643,9 @@ PS_GC_FUNC(files) if (data->dirdepth == 0) { *nrdels = ps_files_cleanup_dir(data->basedir, maxlifetime); - } else { - *nrdels = -1; // Cannot process multiple depth save dir } - return *nrdels; + return SUCCESS; } diff --git a/ext/session/mod_mm.c b/ext/session/mod_mm.c index 3181e1641c..3f69897556 100644 --- a/ext/session/mod_mm.c +++ b/ext/session/mod_mm.c @@ -468,7 +468,7 @@ PS_GC_FUNC(mm) mm_unlock(data->mm); - return nrdels; + return SUCCESS; } PS_CREATE_SID_FUNC(mm) diff --git a/ext/session/mod_user.c b/ext/session/mod_user.c index 0cdbaf96f9..beddce8883 100644 --- a/ext/session/mod_user.c +++ b/ext/session/mod_user.c @@ -176,22 +176,13 @@ PS_DESTROY_FUNC(user) PS_GC_FUNC(user) { zval args[1]; - zval retval; + STDVARS; ZVAL_LONG(&args[0], maxlifetime); ps_call_handler(&PSF(gc), 1, args, &retval); - if (Z_TYPE(retval) == IS_LONG) { - convert_to_long(&retval); - return Z_LVAL(retval); - } - /* This is for older API compatibility */ - if (Z_TYPE(retval) == IS_TRUE) { - return 1; - } - /* Anything else is some kind of error */ - return -1; // Error + FINISH; } PS_CREATE_SID_FUNC(user) diff --git a/ext/session/mod_user_class.c b/ext/session/mod_user_class.c index b132552faf..a774d4bf9c 100644 --- a/ext/session/mod_user_class.c +++ b/ext/session/mod_user_class.c @@ -148,7 +148,7 @@ PHP_METHOD(SessionHandler, destroy) PHP_METHOD(SessionHandler, gc) { zend_long maxlifetime; - zend_long nrdels = -1; + int nrdels; PS_SANITY_CHECK_IS_OPEN; @@ -156,10 +156,7 @@ PHP_METHOD(SessionHandler, gc) return; } - if (PS(default_mod)->s_gc(&PS(mod_data), maxlifetime, &nrdels) == FAILURE) { - RETURN_FALSE; - } - RETURN_LONG(nrdels); + RETURN_BOOL(SUCCESS == PS(default_mod)->s_gc(&PS(mod_data), maxlifetime, &nrdels)); } /* }}} */ diff --git a/ext/session/php_session.h b/ext/session/php_session.h index da5e48515a..b693fd4b87 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -39,7 +39,7 @@ #define PS_READ_ARGS void **mod_data, zend_string *key, zend_string **val, zend_long maxlifetime #define PS_WRITE_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime #define PS_DESTROY_ARGS void **mod_data, zend_string *key -#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, zend_long *nrdels +#define PS_GC_ARGS void **mod_data, zend_long maxlifetime, int *nrdels #define PS_CREATE_SID_ARGS void **mod_data #define PS_VALIDATE_SID_ARGS void **mod_data, zend_string *key #define PS_UPDATE_TIMESTAMP_ARGS void **mod_data, zend_string *key, zend_string *val, zend_long maxlifetime @@ -51,7 +51,7 @@ typedef struct ps_module_struct { int (*s_read)(PS_READ_ARGS); int (*s_write)(PS_WRITE_ARGS); int (*s_destroy)(PS_DESTROY_ARGS); - zend_long (*s_gc)(PS_GC_ARGS); + int (*s_gc)(PS_GC_ARGS); zend_string *(*s_create_sid)(PS_CREATE_SID_ARGS); int (*s_validate_sid)(PS_VALIDATE_SID_ARGS); int (*s_update_timestamp)(PS_UPDATE_TIMESTAMP_ARGS); @@ -65,7 +65,7 @@ typedef struct ps_module_struct { #define PS_READ_FUNC(x) int ps_read_##x(PS_READ_ARGS) #define PS_WRITE_FUNC(x) int ps_write_##x(PS_WRITE_ARGS) #define PS_DESTROY_FUNC(x) int ps_delete_##x(PS_DESTROY_ARGS) -#define PS_GC_FUNC(x) zend_long ps_gc_##x(PS_GC_ARGS) +#define PS_GC_FUNC(x) int ps_gc_##x(PS_GC_ARGS) #define PS_CREATE_SID_FUNC(x) zend_string *ps_create_sid_##x(PS_CREATE_SID_ARGS) #define PS_VALIDATE_SID_FUNC(x) int ps_validate_sid_##x(PS_VALIDATE_SID_ARGS) #define PS_UPDATE_TIMESTAMP_FUNC(x) int ps_update_timestamp_##x(PS_UPDATE_TIMESTAMP_ARGS) diff --git a/ext/session/session.c b/ext/session/session.c index 1c0bde9d37..ed5e64ed2a 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -353,23 +353,19 @@ PHPAPI int php_session_valid_key(const char *key) /* {{{ */ /* }}} */ -static zend_long php_session_gc(zend_bool immediate) /* {{{ */ +static void php_session_gc(void) /* {{{ */ { int nrand; - zend_long num = -1; /* GC must be done before reading session data. */ - if ((PS(mod_data) || PS(mod_user_implemented))) { - if (immediate) { - PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &num); - return num; - } - nrand = (zend_long) ((float) PS(gc_divisor) * php_combined_lcg()); - if (PS(gc_probability) > 0 && nrand < PS(gc_probability)) { - PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &num); + if ((PS(mod_data) || PS(mod_user_implemented)) && PS(gc_probability) > 0) { + int nrdels = -1; + + nrand = (int) ((float) PS(gc_divisor) * php_combined_lcg()); + if (nrand < PS(gc_probability)) { + PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels); } } - return num; } /* }}} */ static void php_session_initialize(void) /* {{{ */ @@ -434,7 +430,7 @@ static void php_session_initialize(void) /* {{{ */ } /* GC must be done after read */ - php_session_gc(0); + php_session_gc(); if (PS(session_vars)) { zend_string_release(PS(session_vars)); @@ -2244,32 +2240,6 @@ static PHP_FUNCTION(session_unset) } /* }}} */ -/* {{{ proto int session_gc(void) - Perform GC and return number of deleted sessions */ -static PHP_FUNCTION(session_gc) -{ - zend_long num; - - if (zend_parse_parameters_none() == FAILURE) { - return; - } - - if (PS(session_status) != php_session_active) { - php_error_docref(NULL, E_WARNING, "Session is not active"); - RETURN_FALSE; - } - - num = php_session_gc(1); - if (num < 0) { - php_error_docref(NULL, E_WARNING, "Failed to perfom session GC"); - RETURN_FALSE; - } - - RETURN_LONG(num); -} -/* }}} */ - - /* {{{ proto void session_write_close(void) Write session data and end session */ static PHP_FUNCTION(session_write_close) @@ -2447,7 +2417,6 @@ static const zend_function_entry session_functions[] = { PHP_FE(session_start, arginfo_session_void) PHP_FE(session_destroy, arginfo_session_void) PHP_FE(session_unset, arginfo_session_void) - PHP_FE(session_gc, arginfo_session_void) PHP_FE(session_set_save_handler, arginfo_session_set_save_handler) PHP_FE(session_cache_limiter, arginfo_session_cache_limiter) PHP_FE(session_cache_expire, arginfo_session_cache_expire) |