From fc7cd3ebcce396aa8e76c81327b14224a129cefb Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Mon, 2 Feb 2009 17:50:21 +0000 Subject: [PATCH 01/12] register const for ketama-hashing behaviour, which is already supported by libmemcached --- php_memcached.c | 1 + 1 file changed, 1 insertion(+) diff --git a/php_memcached.c b/php_memcached.c index ed75bb8d..496f9ef9 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -2483,6 +2483,7 @@ static void php_memc_register_constants(INIT_FUNC_ARGS) REGISTER_MEMC_CLASS_CONST_LONG(OPT_DISTRIBUTION, MEMCACHED_BEHAVIOR_DISTRIBUTION); REGISTER_MEMC_CLASS_CONST_LONG(DISTRIBUTION_MODULA, MEMCACHED_DISTRIBUTION_MODULA); REGISTER_MEMC_CLASS_CONST_LONG(DISTRIBUTION_CONSISTENT, MEMCACHED_DISTRIBUTION_CONSISTENT); + REGISTER_MEMC_CLASS_CONST_LONG(DISTRIBUTION_KETAMA_WEIGHTED, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED); REGISTER_MEMC_CLASS_CONST_LONG(OPT_BUFFER_WRITES, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS); REGISTER_MEMC_CLASS_CONST_LONG(OPT_BINARY_PROTOCOL, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL); REGISTER_MEMC_CLASS_CONST_LONG(OPT_NO_BLOCK, MEMCACHED_BEHAVIOR_NO_BLOCK); From 3e10673c72667c7d30b2e70b0f1e87edc68d93fc Mon Sep 17 00:00:00 2001 From: andrei Date: Wed, 4 Feb 2009 08:34:31 +0800 Subject: [PATCH 02/12] Various fixes. - Rename certain parameters in the API to be more clear. - Allow only strings as the append/prepend value. - Remove expiration parameter from append/prepend. Signed-off-by: Richard Jones --- memcached-api.php | 10 +++---- php_memcached.c | 67 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/memcached-api.php b/memcached-api.php index 22be44e7..208d75b1 100644 --- a/memcached-api.php +++ b/memcached-api.php @@ -95,9 +95,9 @@ public function set( $key, $value, $expiration = 0 ) {} public function setByKey( $server_key, $key, $value, $expiration = 0 ) {} - public function setMulti( $array, $expiration = 0 ) {} + public function setMulti( array $items, $expiration = 0 ) {} - public function setMultiByKey( $server_key, $array, $expiration = 0 ) {} + public function setMultiByKey( $server_key, array $items, $expiration = 0 ) {} public function cas( $token, $key, $value, $expiration = 0 ) {} @@ -119,9 +119,9 @@ public function replace( $key, $value, $expiration = 0 ) {} public function replaceByKey( $serve_key, $key, $value, $expiration = 0 ) {} - public function delete( $key, $expiration = 0 ) {} + public function delete( $key, $time = 0 ) {} - public function deleteByKey( $key, $expiration = 0 ) {} + public function deleteByKey( $key, $time = 0 ) {} public function increment( $key, $offset = 1) {} @@ -139,7 +139,7 @@ public function getServerList( ) {} public function getServerByKey( $server_key ) {} - public function flush( ) {} + public function flush( $delay = 0 ) {} public function getResultCode( ) {} diff --git a/php_memcached.c b/php_memcached.c index d9fa0d73..18c52085 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -17,6 +17,8 @@ /* $ Id: $ */ /* TODO + * - set LIBKETAMA_COMPATIBLE as the default? + * - add payload flag for IS_BOOL? */ #ifdef HAVE_CONFIG_H @@ -837,16 +839,16 @@ PHP_METHOD(Memcached, setByKey) } /* }}} */ -/* {{{ Memcached::setMulti(array entries [, int expiration ]) - Sets the keys/values specified in the entries array */ +/* {{{ Memcached::setMulti(array items [, int expiration ]) + Sets the keys/values specified in the items array */ PHP_METHOD(Memcached, setMulti) { php_memc_setMulti_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); } /* }}} */ -/* {{{ Memcached::setMultiByKey(string server_key, array entries [, int expiration ]) - Sets the keys/values specified in the entries array on the server identified by the given server key */ +/* {{{ Memcached::setMultiByKey(string server_key, array items [, int expiration ]) + Sets the keys/values specified in the items array on the server identified by the given server key */ PHP_METHOD(Memcached, setMultiByKey) { php_memc_setMulti_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); @@ -991,6 +993,8 @@ static void php_memc_store_impl(INTERNAL_FUNCTION_PARAMETERS, int op, zend_bool int key_len = 0; char *server_key = NULL; int server_key_len = 0; + char *s_value = NULL; + int s_value_len = 0; zval *value; time_t expiration = 0; char *payload; @@ -1000,14 +1004,32 @@ static void php_memc_store_impl(INTERNAL_FUNCTION_PARAMETERS, int op, zend_bool MEMC_METHOD_INIT_VARS; if (by_key) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssz|l", &server_key, - &server_key_len, &key, &key_len, &value, &expiration) == FAILURE) { - return; + if (op == MEMC_OP_APPEND || op == MEMC_OP_PREPEND) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &server_key, + &server_key_len, &key, &key_len, &s_value, &s_value_len, &expiration) == FAILURE) { + return; + } + MAKE_STD_ZVAL(value); + ZVAL_STRINGL(value, s_value, s_value_len, 1); + } else { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssz|l", &server_key, + &server_key_len, &key, &key_len, &value, &expiration) == FAILURE) { + return; + } } } else { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &key, &key_len, - &value, &expiration) == FAILURE) { - return; + if (op == MEMC_OP_APPEND || op == MEMC_OP_PREPEND) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &key, &key_len, + &s_value, &s_value_len) == FAILURE) { + return; + } + MAKE_STD_ZVAL(value); + ZVAL_STRINGL(value, s_value, s_value_len, 1); + } else { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &key, &key_len, + &value, &expiration) == FAILURE) { + return; + } } server_key = key; server_key_len = key_len; @@ -1035,6 +1057,9 @@ static void php_memc_store_impl(INTERNAL_FUNCTION_PARAMETERS, int op, zend_bool } payload = php_memc_zval_to_payload(value, &payload_len, &flags TSRMLS_CC); + if (op == MEMC_OP_APPEND || op == MEMC_OP_PREPEND) { + zval_ptr_dtor(&value); + } if (payload == NULL) { MEMC_G(rescode) = MEMC_RES_PAYLOAD_FAILURE; RETURN_FALSE; @@ -1158,7 +1183,7 @@ static void php_memc_cas_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key) } /* }}} */ -/* {{{ Memcached::delete(string key [, int expiration ]) +/* {{{ Memcached::delete(string key [, int time ]) Deletes the given key */ PHP_METHOD(Memcached, delete) { @@ -1166,7 +1191,7 @@ PHP_METHOD(Memcached, delete) } /* }}} */ -/* {{{ Memcached::deleteByKey(string server_key, string key [, int expiration ]) +/* {{{ Memcached::deleteByKey(string server_key, string key [, int time ]) Deletes the given key from the server identified by the server key */ PHP_METHOD(Memcached, deleteByKey) { @@ -1501,22 +1526,22 @@ PHP_METHOD(Memcached, getStats) } /* }}} */ -/* {{{ Memcached::flush([ int expiration ]) +/* {{{ Memcached::flush([ int delay ]) Flushes the data on all the servers */ static PHP_METHOD(Memcached, flush) { - time_t expiration = 0; + time_t delay = 0; memcached_return status; MEMC_METHOD_INIT_VARS; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &expiration) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &delay) == FAILURE) { return; } MEMC_METHOD_FETCH_OBJECT; MEMC_G(rescode) = MEMCACHED_SUCCESS; - status = memcached_flush(i_obj->memc, expiration); + status = memcached_flush(i_obj->memc, delay); if (php_memc_handle_error(status TSRMLS_CC) < 0) { RETURN_FALSE; } @@ -2302,14 +2327,14 @@ ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_setMulti, 0, 0, 1) - ZEND_ARG_ARRAY_INFO(0, entries, 0) + ZEND_ARG_ARRAY_INFO(0, items, 0) ZEND_ARG_INFO(0, expiration) ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_setMultiByKey, 0, 0, 2) ZEND_ARG_INFO(0, server_key) - ZEND_ARG_ARRAY_INFO(0, entries, 0) + ZEND_ARG_ARRAY_INFO(0, items, 0) ZEND_ARG_INFO(0, expiration) ZEND_END_ARG_INFO() @@ -2393,14 +2418,14 @@ ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_delete, 0, 0, 1) ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(0, expiration) + ZEND_ARG_INFO(0, time) ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_deleteByKey, 0, 0, 2) ZEND_ARG_INFO(0, server_key) ZEND_ARG_INFO(0, key) - ZEND_ARG_INFO(0, expiration) + ZEND_ARG_INFO(0, time) ZEND_END_ARG_INFO() static @@ -2417,7 +2442,7 @@ ZEND_END_ARG_INFO() static ZEND_BEGIN_ARG_INFO_EX(arginfo_flush, 0, 0, 0) - ZEND_ARG_INFO(0, expiration) + ZEND_ARG_INFO(0, delay) ZEND_END_ARG_INFO() static From 4feba8120e47d12e23484b4be054c36c8577067a Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 5 Feb 2009 05:58:47 +0800 Subject: [PATCH 03/12] Ignore cscope.out Signed-off-by: Richard Jones --- .cvsignore | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.cvsignore b/.cvsignore index 60a8bcf5..cc617d3d 100644 --- a/.cvsignore +++ b/.cvsignore @@ -43,3 +43,4 @@ Release_TS_inline Debug_TS memcached*.tgz run-tests.php +cscope.out diff --git a/.gitignore b/.gitignore index fdd0d2cf..0b25b31d 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ Release_TS_inline Debug_TS memcached*.tgz run-tests.php +cscope.out From fa4250cb3c7b8f8b89eac2dba8a35143715ff509 Mon Sep 17 00:00:00 2001 From: andrei Date: Thu, 5 Feb 2009 05:59:03 +0800 Subject: [PATCH 04/12] Fixes: - Allow passing 'null' for callbacks - get() with cas token fetching wasn't erroring out properly Signed-off-by: Richard Jones --- php_memcached.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/php_memcached.c b/php_memcached.c index 18c52085..d29077c0 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -292,12 +292,12 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key) MEMC_METHOD_INIT_VARS; if (by_key) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|fz", &server_key, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|f!z", &server_key, &server_key_len, &key, &key_len, &fci, &fcc, &cas_token) == FAILURE) { return; } } else { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|fz", &key, &key_len, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|f!z", &key, &key_len, &fci, &fcc, &cas_token) == FAILURE) { return; } @@ -334,12 +334,16 @@ static void php_memc_get_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_key) if (memcached_fetch_result(i_obj->memc, &result, &status) == NULL) { + /* This is for historical reasons */ + if (status == MEMCACHED_END) + status = MEMCACHED_NOTFOUND; + /* * If the result wasn't found, and we have the read-through callback, invoke * it to get the value. The CAS token will be 0, because we cannot generate it * ourselves. */ - if ((status == MEMCACHED_END || status == MEMCACHED_NOTFOUND) && fci.size != 0) { + if (status == MEMCACHED_NOTFOUND && fci.size != 0) { status = php_memc_do_cache_callback(getThis(), &fci, &fcc, key, key_len, return_value TSRMLS_DC); ZVAL_DOUBLE(cas_token, 0); @@ -611,12 +615,12 @@ static void php_memc_getDelayed_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_ MEMC_METHOD_INIT_VARS; if (by_key) { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa|bf", &server_key, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa|bf!", &server_key, &server_key_len, &keys, &with_cas, &fci, &fcc) == FAILURE) { return; } } else { - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|bf", &keys, &with_cas, + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|bf!", &keys, &with_cas, &fci, &fcc) == FAILURE) { return; } From a44af266b5871b9a3c5d5b50fc95d135e2eb6489 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Thu, 5 Feb 2009 06:15:11 +0800 Subject: [PATCH 05/12] Use markdown. Signed-off-by: Richard Jones --- README => README.markdown | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README => README.markdown (100%) diff --git a/README b/README.markdown similarity index 100% rename from README rename to README.markdown From 5f4aca7c1748bec6835502e3d374d6d662fd1864 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Thu, 5 Feb 2009 06:22:25 +0800 Subject: [PATCH 06/12] Fix markdown. Signed-off-by: Richard Jones --- README.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.markdown b/README.markdown index 3f324136..2b3b4579 100644 --- a/README.markdown +++ b/README.markdown @@ -1,3 +1,5 @@ +Description +----------- This extension uses libmemcached library to provide API for communicating with memcached servers. @@ -7,8 +9,5 @@ by alleviating database load. Resources --------- - libmemcached: - http://tangent.org/552/libmemcached.html - - memcached: - http://www.danga.com/memcached/ + * [libmemcached](http://tangent.org/552/libmemcached.html) + * [memcached](http://www.danga.com/memcached/) From 8c12442f0d8a8ea6852b3e64a56b23adb4b3b5e9 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 02:52:03 +0800 Subject: [PATCH 07/12] Forgot getStats(). Signed-off-by: Richard Jones --- memcached-api.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/memcached-api.php b/memcached-api.php index 208d75b1..f1851e14 100644 --- a/memcached-api.php +++ b/memcached-api.php @@ -140,6 +140,8 @@ public function getServerList( ) {} public function getServerByKey( $server_key ) {} public function flush( $delay = 0 ) {} + + public function getStats( ) {} public function getResultCode( ) {} From 53d99a8ee4ce6609a6de86621902170600f64585 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 02:52:20 +0800 Subject: [PATCH 08/12] Check for server key length. Signed-off-by: Richard Jones --- php_memcached.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/php_memcached.c b/php_memcached.c index d29077c0..6905be8b 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -19,6 +19,7 @@ /* TODO * - set LIBKETAMA_COMPATIBLE as the default? * - add payload flag for IS_BOOL? + * - add getVersion() */ #ifdef HAVE_CONFIG_H @@ -1383,6 +1384,7 @@ PHP_METHOD(Memcached, addServers) } } + /* catch-all for all errors */ php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not add entry #%d to the server list", i+1); } @@ -1443,6 +1445,11 @@ PHP_METHOD(Memcached, getServerByKey) return; } + if (server_key_len == 0) { + MEMC_G(rescode) = MEMCACHED_BAD_KEY_PROVIDED; + RETURN_FALSE; + } + MEMC_METHOD_FETCH_OBJECT; MEMC_G(rescode) = MEMCACHED_SUCCESS; From 1535c702caecfc1c0cf50c5afd5d2989406f17dd Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 02:53:16 +0800 Subject: [PATCH 09/12] Fix bug #15896 (Memcached setMulti error) Signed-off-by: Richard Jones --- php_memcached.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php_memcached.c b/php_memcached.c index 6905be8b..08d48e85 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -915,7 +915,7 @@ static void php_memc_setMulti_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_ke server_key_len = str_key_len; } status = memcached_set_by_key(i_obj->memc, server_key, server_key_len, str_key, - str_key_len, payload, payload_len, expiration, flags); + str_key_len-1, payload, payload_len, expiration, flags); efree(payload); if (php_memc_handle_error(status TSRMLS_CC) < 0) { From 15c51f2bd4f1d95fd2d49e1aa932a0ce131f3847 Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 03:15:26 +0800 Subject: [PATCH 10/12] Release 0.1.2. Signed-off-by: Richard Jones --- ChangeLog | 10 ++++++++++ package.xml | 32 +++++++++++++++++++++++++------- php_memcached.h | 2 +- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee21066a..172720f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ memcached extension changelog +Version 0.1.2 +------------- + * Fix bug #15896 (Memcached setMulti error). + * Check for empty key in getServerByKey(). + * Allow passing 'null' for callbacks. + * get() with cas token fetching wasn't erroring out properly. + * Rename certain parameters in the API to be more clear. + * Allow only strings as the append/prepend value. + * Remove expiration parameter from append/prepend. + Version 0.1.1 ------------- * Add OPT_LIBKETAMA_COMPATIBLE option. diff --git a/package.xml b/package.xml index 620a423c..0c939d3a 100644 --- a/package.xml +++ b/package.xml @@ -15,10 +15,10 @@ http://pear.php.net/dtd/package-2.0.xsd"> andrei@php.net yes - 2009-02-02 + 2009-02-06 - 0.1.1 - 0.1.1 + 0.1.2 + 0.1.2 beta @@ -26,14 +26,18 @@ http://pear.php.net/dtd/package-2.0.xsd"> PHP -- Add OPT_LIBKETAMA_COMPATIBLE option. -- Implement addServers() method. -- Swap internal compressed and serialized flags to be compatible with other clients. +- Fix bug #15896 (Memcached setMulti error). +- Check for empty key in getServerByKey(). +- Allow passing 'null' for callbacks. +- get() with cas token fetching wasn't erroring out properly. +- Rename certain parameters in the API to be more clear. +- Allow only strings as the append/prepend value. +- Remove expiration parameter from append/prepend. - + @@ -59,6 +63,20 @@ http://pear.php.net/dtd/package-2.0.xsd"> memcached + + betabeta + 0.1.20.1.2 + 2009-02-06 + +- Fix bug #15896 (Memcached setMulti error). +- Check for empty key in getServerByKey(). +- Allow passing 'null' for callbacks. +- get() with cas token fetching wasn't erroring out properly. +- Rename certain parameters in the API to be more clear. +- Allow only strings as the append/prepend value. +- Remove expiration parameter from append/prepend. + + betabeta 0.1.10.1.1 diff --git a/php_memcached.h b/php_memcached.h index fdb79a8e..3be50210 100644 --- a/php_memcached.h +++ b/php_memcached.h @@ -49,7 +49,7 @@ PHP_RINIT_FUNCTION(memcached); PHP_RSHUTDOWN_FUNCTION(memcached); PHP_MINFO_FUNCTION(memcached); -#define PHP_MEMCACHED_VERSION "0.1.1" +#define PHP_MEMCACHED_VERSION "0.1.2" #ifdef ZTS #define MEMC_G(v) TSRMG(php_memcached_globals_id, zend_memcache_globals *, v) From 95aaa1f1c7dae342f9d9d18d3939eb6fc49ac4cb Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 05:19:20 +0800 Subject: [PATCH 11/12] Bludgeon bug #15896 (Memcached setMulti error) into submission. Signed-off-by: Richard Jones --- php_memcached.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/php_memcached.c b/php_memcached.c index 08d48e85..60441542 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -912,7 +912,7 @@ static void php_memc_setMulti_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool by_ke if (!by_key) { server_key = str_key; - server_key_len = str_key_len; + server_key_len = str_key_len-1; } status = memcached_set_by_key(i_obj->memc, server_key, server_key_len, str_key, str_key_len-1, payload, payload_len, expiration, flags); From 6d7ccecb64d55bd363891de99e8ab91b754091ad Mon Sep 17 00:00:00 2001 From: Andrei Zmievski Date: Sat, 7 Feb 2009 05:24:41 +0800 Subject: [PATCH 12/12] Release 0.1.3. Signed-off-by: Richard Jones --- ChangeLog | 4 ++++ package.xml | 23 ++++++++++++++--------- php_memcached.h | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 172720f8..5791c661 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ memcached extension changelog +Version 0.1.3 +------------- + * Bludgeon bug #15896 (Memcached setMulti error) into submission. + Version 0.1.2 ------------- * Fix bug #15896 (Memcached setMulti error). diff --git a/package.xml b/package.xml index 0c939d3a..bf8496d0 100644 --- a/package.xml +++ b/package.xml @@ -17,8 +17,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> 2009-02-06 - 0.1.2 - 0.1.2 + 0.1.3 + 0.1.3 beta @@ -26,13 +26,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> PHP -- Fix bug #15896 (Memcached setMulti error). -- Check for empty key in getServerByKey(). -- Allow passing 'null' for callbacks. -- get() with cas token fetching wasn't erroring out properly. -- Rename certain parameters in the API to be more clear. -- Allow only strings as the append/prepend value. -- Remove expiration parameter from append/prepend. +- Bludgeon bug #15896 (Memcached setMulti error) into submission. @@ -63,6 +57,15 @@ http://pear.php.net/dtd/package-2.0.xsd"> memcached + + betabeta + 0.1.30.1.3 + 2009-02-06 + +- Bludgeon bug #15896 (Memcached setMulti error) into submission. + + + betabeta 0.1.20.1.2 @@ -77,6 +80,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> - Remove expiration parameter from append/prepend. + betabeta 0.1.10.1.1 @@ -87,6 +91,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> - Swap internal compressed and serialized flags to be compatible with other clients. + betabeta 0.1.00.1.0 diff --git a/php_memcached.h b/php_memcached.h index 3be50210..d8f2a06b 100644 --- a/php_memcached.h +++ b/php_memcached.h @@ -49,7 +49,7 @@ PHP_RINIT_FUNCTION(memcached); PHP_RSHUTDOWN_FUNCTION(memcached); PHP_MINFO_FUNCTION(memcached); -#define PHP_MEMCACHED_VERSION "0.1.2" +#define PHP_MEMCACHED_VERSION "0.1.3" #ifdef ZTS #define MEMC_G(v) TSRMG(php_memcached_globals_id, zend_memcache_globals *, v)