diff --git a/ChangeLog b/ChangeLog index 1db3dd44..d1cb75b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ memcached extension changelog +Version 3.0.4 (2017-11-20) +-------------------------- + + * Fix corrupted interned strings (#338) + * Fix unit tests for compatibility with PHP 7.2 (#358, #359) + * Fix \x0a in key name locks up connection and triggers a fatal timeout error (#339) + * Fix missing optional parameter getStats($type) (#337) + * Fix typo in skip message (#331) + * Fix build warnings (329) + * Document GET_EXTENDED flag, add/rename other missing/misnamed constants (#335) + Version 3.0.3 (2017-02-19) -------------------------- diff --git a/README.markdown b/README.markdown index f145c2df..19a8ab18 100644 --- a/README.markdown +++ b/README.markdown @@ -23,7 +23,7 @@ Dependencies ------------ php-memcached 3.x: -* Supports PHP 7.0 - 7.1. +* Supports PHP 7.0 - 7.2. * Requires libmemcached 1.x or higher. * Optionally supports igbinary 2.0 or higher. * Optionally supports msgpack 2.0 or higher. diff --git a/memcached.ini b/memcached.ini index 6d05da3c..59001aaf 100644 --- a/memcached.ini +++ b/memcached.ini @@ -2,39 +2,45 @@ ; Use session locking ; valid values: On, Off ; the default is On -;memcached.sess_locking = On +memcached.sess_locking = On + +; !! DEPRECATED AND REMOVED in 3.x !! +; memcached.sess_lock_wait = 150000 + +; !! DEPRECATED AND REMOVED in 3.x !! +; memcached.sess_lock_max_wait = 0; ; The minimum time, in milliseconds, to wait between session lock attempts. ; This value is double on each lock retry until memcached.sess_lock_wait_max ; is reached, after which any further retries will take sess_lock_wait_max seconds. ; Default is 1000. -;memcached.sess_lock_wait_min = 1000; +memcached.sess_lock_wait_min = 1000; ; The maximum time, in milliseconds, to wait between session lock attempts. ; Default is 2000. -;memcached.sess_lock_wait_max = 2000; +memcached.sess_lock_wait_max = 2000; ; The number of times to retry locking the session lock, not including the first attempt. ; Default is 5. -;memcached.sess_lock_retries = 5; +memcached.sess_lock_retries = 5; ; The time, in seconds, before a lock should release itself. ; Setting to 0 results in the default behaviour, which is to ; use the memcached.sess_lock_max_wait setting. If that is ; also 0, max_execution_time will be used. -;memcached.sess_lock_expire = 0; +memcached.sess_lock_expire = 0; ; memcached session key prefix ; valid values are strings less than 219 bytes long ; the default value is "memc.sess.key." -;memcached.sess_prefix = "memc.sess.key." +memcached.sess_prefix = "memc.sess.key." ; Whether or not to re-use the memcached connections corresponding to the value(s) ; of session.save_path after the execution of the script ends. ; Don't use this if certain settings (e.g. SASL settings, sess_binary_protocol) would ; be overridden between requests. ; Default is Off. -;memcached.sess_persistent = Off +memcached.sess_persistent = Off ; memcached session consistent hash mode ; if set to On, consistent hashing (libketama) is used @@ -42,15 +48,11 @@ ; When consistent hashing is used, one can add or remove cache ; node(s) without messing up too much with existing keys ; default is On -;memcached.sess_consistent_hash = On +memcached.sess_consistent_hash = On ; Allow failed memcached server to automatically be removed. ; Default is Off. (In previous versions, this setting was called memcached.sess_remove_failed) -;memcached.sess_remove_failed_servers = Off - -; Set this value to enable the server be removed after -; configured number of continuous times connection failure. -;memcached.sess_server_failure_limit = 0 +memcached.sess_remove_failed_servers = Off ; Write data to a number of additional memcached servers ; This is "poor man's HA" as libmemcached calls it. @@ -59,36 +61,34 @@ ; from a replica. However, if the failed memcache server ; becomes available again it will read the session from there ; which could have old data or no data at all -;memcached.sess_number_of_replicas = 0 +memcached.sess_number_of_replicas = 0 ; Use the memcached binary protocol for memcached sessions (Instead of the text protocol) ; libmemcached replicas work only if binary mode is enabled. ; However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled. -; In older versions of php-memcached, this setting was Off and was called memcached.sess_binary. -; Default is On with libmemcached 1.0.18 or newer. -; Default is Off with older version. -;memcached.sess_binary_protocol = On +; Default is On. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary. +memcached.sess_binary_protocol = On ; memcached session replica read randomize -;memcached.sess_randomize_replica_read = Off +memcached.sess_randomize_replica_read = Off ; memcached connect timeout value ; In non-blocking mode this changes the value of the timeout ; during socket connection in milliseconds. Specifying -1 means an infinite timeout. -;memcached.sess_connect_timeout = 1000 +memcached.sess_connect_timeout = 1000 ; Session SASL username ; Both username and password need to be set for SASL to be enabled ; In addition to this memcached.use_sasl needs to be on -;memcached.sess_sasl_username = NULL +memcached.sess_sasl_username = NULL ; Session SASL password -;memcached.sess_sasl_password = NULL +memcached.sess_sasl_password = NULL ; Set the compression type ; valid values are: fastlz, zlib ; the default is fastlz -;memcached.compression_type = "fastlz" +memcached.compression_type = "fastlz" ; Compression factor ; Store compressed value only if the compression @@ -98,13 +98,13 @@ ; plain_len > comp_len * factor ; ; the default value is 1.3 (23% space saving) -;memcached.compression_factor = "1.3" +memcached.compression_factor = "1.3" ; The compression threshold ; ; Do not compress serialized values below this threshold. ; the default is 2000 bytes -;memcached.compression_threshold = 2000 +memcached.compression_threshold = 2000 ; Set the default serializer for new memcached objects. ; valid values are: php, igbinary, json, json_array, msgpack @@ -119,14 +119,14 @@ ; msgpack - a cross-language binary serializer ; ; The default is igbinary if available, then msgpack if available, then php otherwise. -;memcached.serializer = "igbinary" +memcached.serializer = "igbinary" ; The amount of retries for failed store commands. ; This mechanism allows transparent fail-over to secondary servers when ; set/increment/decrement/setMulti operations fail on the desired server in a multi-server ; environment. ; the default is 2 -;memcached.store_retry_count = 2 +memcached.store_retry_count = 2 ; Sets the default for consistent hashing for new connections. ; (To configure consistent hashing for session connections, @@ -137,7 +137,7 @@ ; When consistent hashing is used, one can add or remove cache ; node(s) without messing up too much with existing keys ; default is Off -;memcached.default_consistent_hash = Off +memcached.default_consistent_hash = Off ; Sets the default memcached protocol for new connections. ; (To configure the memcached protocol for connections used by sessions, @@ -146,7 +146,7 @@ ; If set to On, the memcached binary protocol is used by default. ; If set to Off, the memcached text protocol is used. ; Default is Off -;memcached.default_binary_protocol = Off +memcached.default_binary_protocol = Off ; Sets the default memcached connection timeout for new connections. ; (To configure the memcached connection timeout for sessions, @@ -155,4 +155,4 @@ ; during socket connection in milliseconds. Specifying -1 means an infinite timeout. ; Specifying 0 means using the memcached library's default connection timeout. ; Default is 0. -;memcached.default_connect_timeout = 0 +memcached.default_connect_timeout = 0 diff --git a/package.xml b/package.xml index 5e1961f7..8ddf6786 100644 --- a/package.xml +++ b/package.xml @@ -27,9 +27,9 @@ http://pear.php.net/dtd/package-2.0.xsd"> aaron@serendipity.cx yes - 2017-02-19 + 2017-11-20 - 3.0.3 + 3.0.4 3.0.0 @@ -38,13 +38,19 @@ http://pear.php.net/dtd/package-2.0.xsd"> PHP -PHP7 release of memcached extension. Note that support for libmemcached 0.x series has been discontinued -and the oldest actively tested version is 1.0.2. It is highly recommended to use version 1.0.18 of +PHP 7.0 - 7.1 - 7.2 release of memcached extension. Note that support for +libmemcached 0.x series has been discontinued and the oldest actively tested +version is 1.0.2. It is highly recommended to use version 1.0.18 of libmemcached. Fixes - * Fix crash when checking session data with older versions of libmemcached (#328) - * Fix crash due to zend_mm_corrupted when fetching session data (#327) + * Fix corrupted interned strings (#338) + * Fix unit tests for compatibility with PHP 7.2 (#358, #359) + * Fix \x0a in key name locks up connection and triggers a fatal timeout error (#339) + * Fix missing optional parameter getStats($type) (#337) + * Fix typo in skip message (#331) + * Fix build warnings (329) + * Document GET_EXTENDED flag, add/rename other missing/misnamed constants (#335) @@ -191,6 +197,26 @@ Fixes + + + stable + stable + + + 3.0.3 + 3.0.0 + + 2017-02-19 + +PHP7 release of memcached extension. Note that support for libmemcached 0.x series has been discontinued +and the oldest actively tested version is 1.0.2. It is highly recommended to use version 1.0.18 of +libmemcached. + +Fixes + * Fix crash when checking session data with older versions of libmemcached (#328) + * Fix crash due to zend_mm_corrupted when fetching session data (#327) + + stable diff --git a/php_memcached.c b/php_memcached.c index 65d11eb2..f55cd2ef 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -339,11 +339,7 @@ PHP_INI_BEGIN() MEMC_SESSION_INI_ENTRY("lock_wait_max", "2000", OnUpdateLongGEZero, lock_wait_max) MEMC_SESSION_INI_ENTRY("lock_retries", "5", OnUpdateLong, lock_retries) MEMC_SESSION_INI_ENTRY("lock_expire", "0", OnUpdateLongGEZero, lock_expiration) -#if defined(LIBMEMCACHED_VERSION_HEX) && LIBMEMCACHED_VERSION_HEX < 0x01000018 - MEMC_SESSION_INI_ENTRY("binary_protocol", "0", OnUpdateBool, binary_protocol_enabled) -#else MEMC_SESSION_INI_ENTRY("binary_protocol", "1", OnUpdateBool, binary_protocol_enabled) -#endif MEMC_SESSION_INI_ENTRY("consistent_hash", "1", OnUpdateBool, consistent_hash_enabled) MEMC_SESSION_INI_ENTRY("number_of_replicas", "0", OnUpdateLongGEZero, number_of_replicas) MEMC_SESSION_INI_ENTRY("randomize_replica_read", "0", OnUpdateLongGEZero, randomize_replica_read_enabled) diff --git a/php_memcached.h b/php_memcached.h index 65a0349f..cea90716 100644 --- a/php_memcached.h +++ b/php_memcached.h @@ -27,7 +27,7 @@ # include "config.h" #endif -#define PHP_MEMCACHED_VERSION "3.0.3" +#define PHP_MEMCACHED_VERSION "3.0.4" #if defined(PHP_WIN32) && defined(MEMCACHED_EXPORTS) #define PHP_MEMCACHED_API __declspec(dllexport)