diff -uN memcache-2.2.6/memcache.c memcache-2.2.6.1/memcache.c
--- memcache-2.2.6/memcache.c 2010-10-04 04:57:47.000000000 +0800
+++ memcache-2.2.6.1/memcache.c 2011-08-02 23:44:48.000000000 +0800
@@ -56,6 +56,16 @@
ZEND_DECLARE_MODULE_GLOBALS(memcache)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_memcache_get, 0, 0, 1)
+ ZEND_ARG_INFO(0, key)
+ ZEND_ARG_INFO(1, flags)
+ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_memcache_delete, 0, 0, 1)
+ ZEND_ARG_INFO(0, key)
+ ZEND_ARG_INFO(0, time)
+ ZEND_ARG_INFO(1, error_flag)
+ZEND_END_ARG_INFO()
+
/* {{{ memcache_functions[]
*/
zend_function_entry memcache_functions[] = {
@@ -68,8 +78,8 @@
PHP_FE(memcache_add, NULL)
PHP_FE(memcache_set, NULL)
PHP_FE(memcache_replace, NULL)
- PHP_FE(memcache_get, NULL)
- PHP_FE(memcache_delete, NULL)
+ PHP_FE(memcache_get, arginfo_memcache_get)
+ PHP_FE(memcache_delete, arginfo_memcache_delete)
PHP_FE(memcache_debug, NULL)
PHP_FE(memcache_get_stats, NULL)
PHP_FE(memcache_get_extended_stats, NULL)
@@ -92,8 +102,8 @@
PHP_FALIAS(add, memcache_add, NULL)
PHP_FALIAS(set, memcache_set, NULL)
PHP_FALIAS(replace, memcache_replace, NULL)
- PHP_FALIAS(get, memcache_get, NULL)
- PHP_FALIAS(delete, memcache_delete, NULL)
+ PHP_FALIAS(get, memcache_get, arginfo_memcache_get)
+ PHP_FALIAS(delete, memcache_delete, arginfo_memcache_delete)
PHP_FALIAS(getstats, memcache_get_stats, NULL)
PHP_FALIAS(getextendedstats, memcache_get_extended_stats, NULL)
PHP_FALIAS(setcompressthreshold, memcache_set_compress_threshold, NULL)
@@ -1290,6 +1300,7 @@
/* not found */
if (result == 0) {
+ flags |= 1 << 29; // flag for not found
ZVAL_FALSE(*return_value);
}
/* read "END" */
@@ -2382,23 +2393,32 @@
long time = 0;
char key_tmp[MMC_KEY_MAX_SIZE];
unsigned int key_tmp_len;
+ zval *error_flag = NULL;
if (mmc_object == NULL) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|l", &mmc_object, memcache_class_entry_ptr, &key, &key_len, &time) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Os|lz", &mmc_object, memcache_class_entry_ptr, &key, &key_len, &time, &error_flag) == FAILURE) {
return;
}
}
else {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &key, &key_len, &time) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz", &key, &key_len, &time, &error_flag) == FAILURE) {
return;
}
}
+ if (error_flag == NULL) {
+ ALLOC_INIT_ZVAL(error_flag); // init zval
+ } else {
+ zval_dtor(error_flag); // if other type then destruct
+ }
+ ZVAL_LONG(error_flag, 0); //init to 0
if (!mmc_get_pool(mmc_object, &pool TSRMLS_CC) || !pool->num_servers) {
+ ZVAL_LONG(error_flag, 1 << 30); //set flag as 1 << 30 for network error
RETURN_FALSE;
}
if (mmc_prepare_key_ex(key, key_len, key_tmp, &key_tmp_len TSRMLS_CC) != MMC_OK) {
+ ZVAL_LONG(error_flag, 1 << 28); //set flag as 1 << 28 for key prepare fail
RETURN_FALSE;
}
@@ -2410,7 +2430,11 @@
if (result > 0) {
RETURN_TRUE;
+ } else if(result == 0) { // not found
+ ZVAL_LONG(error_flag, 1 << 29); //set flag as 1 << 29 for not found
+ RETURN_FALSE;
}
+ ZVAL_LONG(error_flag, 1 << 30); //set flag as 1 << 30 for net work error
RETURN_FALSE;
}
/* }}} */
diff -uN memcache-2.2.6/php_memcache.h memcache-2.2.6.1/php_memcache.h
--- memcache-2.2.6/php_memcache.h 2010-10-04 04:57:47.000000000 +0800
+++ memcache-2.2.6.1/php_memcache.h 2011-07-30 21:50:34.000000000 +0800
@@ -63,7 +63,7 @@
PHP_FUNCTION(memcache_flush);
PHP_FUNCTION(memcache_setoptimeout);
-#define PHP_MEMCACHE_VERSION "2.2.6"
+#define PHP_MEMCACHE_VERSION "2.2.6.1"
#define MMC_BUF_SIZE 4096
#define MMC_SERIALIZED 1