@@ -1965,7 +1965,7 @@ PHP_METHOD(Memcached, getServerByKey)
19651965{
19661966 char * server_key ;
19671967 int server_key_len ;
1968- memcached_server_st * server ;
1968+ memcached_server_instance_st * server_instance ;
19691969 memcached_return error ;
19701970 MEMC_METHOD_INIT_VARS ;
19711971
@@ -1981,16 +1981,16 @@ PHP_METHOD(Memcached, getServerByKey)
19811981 RETURN_FALSE ;
19821982 }
19831983
1984- server = memcached_server_by_key (m_obj -> memc , server_key , server_key_len , & error );
1985- if (server == NULL ) {
1984+ server_instance = memcached_server_by_key (m_obj -> memc , server_key , server_key_len , & error );
1985+ if (server_instance == NULL ) {
19861986 php_memc_handle_error (i_obj , error TSRMLS_CC );
19871987 RETURN_FALSE ;
19881988 }
19891989
19901990 array_init (return_value );
1991- add_assoc_string (return_value , "host" , server -> hostname , 1 );
1992- add_assoc_long (return_value , "port" , server -> port );
1993- add_assoc_long (return_value , "weight" , server -> weight );
1991+ add_assoc_string (return_value , "host" , ( char * ) memcached_server_name ( server_instance ) , 1 );
1992+ add_assoc_long (return_value , "port" , memcached_server_port ( server_instance ) );
1993+ add_assoc_long (return_value , "weight" , 0 );
19941994}
19951995/* }}} */
19961996
@@ -2028,6 +2028,81 @@ PHP_METHOD(Memcached, quit)
20282028}
20292029/* }}} */
20302030
2031+ #if defined(LIBMEMCACHED_VERSION_HEX ) && LIBMEMCACHED_VERSION_HEX >= 0x00049000
2032+ /* {{{ Memcached::getLastErrorMessage()
2033+ Returns the last error message that occurred */
2034+ PHP_METHOD (Memcached , getLastErrorMessage )
2035+ {
2036+ MEMC_METHOD_INIT_VARS ;
2037+
2038+ if (zend_parse_parameters_none () == FAILURE ) {
2039+ return ;
2040+ }
2041+
2042+ MEMC_METHOD_FETCH_OBJECT ;
2043+
2044+ RETURN_STRING (memcached_last_error_message (m_obj -> memc ), 1 );
2045+ }
2046+ /* }}} */
2047+
2048+ /* {{{ Memcached::getLastErrorCode()
2049+ Returns the last error code that occurred */
2050+ PHP_METHOD (Memcached , getLastErrorCode )
2051+ {
2052+ MEMC_METHOD_INIT_VARS ;
2053+
2054+ if (zend_parse_parameters_none () == FAILURE ) {
2055+ return ;
2056+ }
2057+
2058+ MEMC_METHOD_FETCH_OBJECT ;
2059+
2060+ RETURN_LONG (memcached_last_error (m_obj -> memc ));
2061+ }
2062+ /* }}} */
2063+
2064+ /* {{{ Memcached::getLastErrorErrno()
2065+ Returns the last error errno that occurred */
2066+ PHP_METHOD (Memcached , getLastErrorErrno )
2067+ {
2068+ MEMC_METHOD_INIT_VARS ;
2069+
2070+ if (zend_parse_parameters_none () == FAILURE ) {
2071+ return ;
2072+ }
2073+
2074+ MEMC_METHOD_FETCH_OBJECT ;
2075+
2076+ RETURN_LONG (memcached_last_error_errno (m_obj -> memc ));
2077+ }
2078+ /* }}} */
2079+ #endif
2080+
2081+ /* {{{ Memcached::getLastDisconnectedServer()
2082+ Returns the last disconnected server
2083+ Was added in 0.34 according to libmemcached's Changelog */
2084+ PHP_METHOD (Memcached , getLastDisconnectedServer )
2085+ {
2086+ memcached_server_instance_st * server_instance ;
2087+ MEMC_METHOD_INIT_VARS ;
2088+
2089+ if (zend_parse_parameters_none () == FAILURE ) {
2090+ return ;
2091+ }
2092+
2093+ MEMC_METHOD_FETCH_OBJECT ;
2094+
2095+ server_instance = memcached_server_get_last_disconnect (m_obj -> memc );
2096+ if (server_instance == NULL ) {
2097+ RETURN_FALSE ;
2098+ }
2099+
2100+ array_init (return_value );
2101+ add_assoc_string (return_value , "host" , (char * ) memcached_server_name (server_instance ), 1 );
2102+ add_assoc_long (return_value , "port" , memcached_server_port (server_instance ));
2103+ }
2104+ /* }}} */
2105+
20312106/* {{{ Memcached::getStats()
20322107 Returns statistics for the memcache servers */
20332108PHP_METHOD (Memcached , getStats )
@@ -2592,7 +2667,7 @@ static memcached_return php_memc_do_serverlist_callback(const memcached_st *ptr,
25922667
25932668 MAKE_STD_ZVAL (array );
25942669 array_init (array );
2595- add_assoc_string (array , "host" , memcached_server_name (instance ), 1 );
2670+ add_assoc_string (array , "host" , ( char * ) memcached_server_name (instance ), 1 );
25962671 add_assoc_long (array , "port" , memcached_server_port (instance ));
25972672 /*
25982673 * API does not allow to get at this field.
@@ -3491,6 +3566,18 @@ ZEND_BEGIN_ARG_INFO(arginfo_getServerByKey, 0)
34913566 ZEND_ARG_INFO (0 , server_key )
34923567ZEND_END_ARG_INFO ()
34933568
3569+ ZEND_BEGIN_ARG_INFO (arginfo_getLastErrorMessage , 0 )
3570+ ZEND_END_ARG_INFO ()
3571+
3572+ ZEND_BEGIN_ARG_INFO (arginfo_getLastErrorCode , 0 )
3573+ ZEND_END_ARG_INFO ()
3574+
3575+ ZEND_BEGIN_ARG_INFO (arginfo_getLastErrorErrno , 0 )
3576+ ZEND_END_ARG_INFO ()
3577+
3578+ ZEND_BEGIN_ARG_INFO (arginfo_getLastDisconnectedServer , 0 )
3579+ ZEND_END_ARG_INFO ()
3580+
34943581ZEND_BEGIN_ARG_INFO (arginfo_getOption , 0 )
34953582 ZEND_ARG_INFO (0 , option )
34963583ZEND_END_ARG_INFO ()
@@ -3578,6 +3665,13 @@ static zend_function_entry memcached_class_methods[] = {
35783665 MEMC_ME (resetServerList , arginfo_resetServerList )
35793666 MEMC_ME (quit , arginfo_quit )
35803667
3668+ #if defined(LIBMEMCACHED_VERSION_HEX ) && LIBMEMCACHED_VERSION_HEX >= 0x00049000
3669+ MEMC_ME (getLastErrorMessage , arginfo_getLastErrorMessage )
3670+ MEMC_ME (getLastErrorCode , arginfo_getLastErrorCode )
3671+ MEMC_ME (getLastErrorErrno , arginfo_getLastErrorErrno )
3672+ #endif
3673+ MEMC_ME (getLastDisconnectedServer , arginfo_getLastDisconnectedServer )
3674+
35813675 MEMC_ME (getStats , arginfo_getStats )
35823676 MEMC_ME (getVersion , arginfo_getVersion )
35833677 MEMC_ME (getAllKeys , arginfo_getAllKeys )
@@ -3716,6 +3810,9 @@ static void php_memc_register_constants(INIT_FUNC_ARGS)
37163810 REGISTER_MEMC_CLASS_CONST_LONG (OPT_SOCKET_RECV_SIZE , MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE );
37173811 REGISTER_MEMC_CLASS_CONST_LONG (OPT_CONNECT_TIMEOUT , MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT );
37183812 REGISTER_MEMC_CLASS_CONST_LONG (OPT_RETRY_TIMEOUT , MEMCACHED_BEHAVIOR_RETRY_TIMEOUT );
3813+ #if defined(LIBMEMCACHED_VERSION_HEX ) && LIBMEMCACHED_VERSION_HEX >= 0x01000003
3814+ REGISTER_MEMC_CLASS_CONST_LONG (OPT_DEAD_TIMEOUT , MEMCACHED_BEHAVIOR_DEAD_TIMEOUT );
3815+ #endif
37193816 REGISTER_MEMC_CLASS_CONST_LONG (OPT_SEND_TIMEOUT , MEMCACHED_BEHAVIOR_SND_TIMEOUT );
37203817 REGISTER_MEMC_CLASS_CONST_LONG (OPT_RECV_TIMEOUT , MEMCACHED_BEHAVIOR_RCV_TIMEOUT );
37213818 REGISTER_MEMC_CLASS_CONST_LONG (OPT_POLL_TIMEOUT , MEMCACHED_BEHAVIOR_POLL_TIMEOUT );
0 commit comments