From 682de86552bdbf39cce70b47f76c307b6de033bf Mon Sep 17 00:00:00 2001 From: Teddy Grenman Date: Thu, 3 Sep 2009 15:54:36 +0300 Subject: [PATCH] Add isPersistent method. --- memcached-api.php | 2 ++ php_memcached.c | 21 ++++++++++++++++++- tests/check_if_persistent.phpt | 37 ++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 tests/check_if_persistent.phpt diff --git a/memcached-api.php b/memcached-api.php index a4f86d0..04539da 100644 --- a/memcached-api.php +++ b/memcached-api.php @@ -147,6 +147,8 @@ class Memcached { public function getResultMessage( ) {} + public function isPersistent( ) {} + } class MemcachedException extends Exception { diff --git a/php_memcached.c b/php_memcached.c index 56cbae1..982ea39 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -2001,6 +2001,20 @@ static PHP_METHOD(Memcached, getResultMessage) } /* }}} */ +/* {{{ Memcached::isPersistent() + Returns the true if instance uses a persistent connection */ +static PHP_METHOD(Memcached, isPersistent) +{ + MEMC_METHOD_INIT_VARS; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) { + return; + } + + MEMC_METHOD_FETCH_OBJECT; + + RETURN_BOOL(i_obj->is_persistent); +} /**************************************** Internal support code @@ -2930,6 +2944,9 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO(arginfo_getVersion, 0) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO(arginfo_isPersistent, 0) +ZEND_END_ARG_INFO() /* }}} */ /* {{{ memcached_class_methods */ @@ -2982,7 +2999,9 @@ static zend_function_entry memcached_class_methods[] = { MEMC_ME(getOption, arginfo_getOption) MEMC_ME(setOption, arginfo_setOption) - MEMC_ME(setOptions, arginfo_setOptions) + MEMC_ME(setOptions, arginfo_setOptions) + + MEMC_ME(isPersistent, arginfo_isPersistent) { NULL, NULL, NULL } }; #undef MEMC_ME diff --git a/tests/check_if_persistent.phpt b/tests/check_if_persistent.phpt new file mode 100644 index 0000000..9af75d2 --- /dev/null +++ b/tests/check_if_persistent.phpt @@ -0,0 +1,37 @@ +--TEST-- +Check if persistent object is persistent +--SKIPIF-- + +--FILE-- +setOption(Memcached::OPT_PREFIX_KEY, "foo_"); + +var_dump($m1->isPersistent()); + +$m1 = new Memcached('id1'); +var_dump($m1->isPersistent()); + +$m2 = new Memcached('id1'); +var_dump($m2->isPersistent()); +// this change affects $m1 +$m2->setOption(Memcached::OPT_PREFIX_KEY, "bar_"); + +$m3 = new Memcached('id2'); +var_dump($m3->isPersistent()); + +$m3 = new Memcached(); +var_dump($m3->isPersistent()); + +// objects have the same resource, but they are not the same object. +var_dump($m1 === $m2); +var_dump($m1->getOption(Memcached::OPT_PREFIX_KEY)); +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(false) +string(4) "bar_"