@@ -323,6 +323,20 @@ PHP_INI_MH(OnUpdateSessionPrefixString)
323323 return OnUpdateString (entry , new_value , mh_arg1 , mh_arg2 , mh_arg3 , stage );
324324}
325325
326+ static
327+ PHP_INI_MH (OnUpdateConsistentHash )
328+ {
329+ if (!strcmp (ZSTR_VAL (new_value ), "ketama" )) {
330+ MEMC_SESS_INI (consistent_hash_type ) = MEMCACHED_BEHAVIOR_KETAMA ;
331+ } else if (!strcmp (ZSTR_VAL (new_value ), "ketama_weighted" )) {
332+ MEMC_SESS_INI (consistent_hash_type ) = MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED ;
333+ } else {
334+ return FAILURE ;
335+ }
336+
337+ return OnUpdateString (entry , new_value , mh_arg1 , mh_arg2 , mh_arg3 , stage );
338+ }
339+
326340#define MEMC_INI_ENTRY (key , default_value , update_fn , gkey ) \
327341 STD_PHP_INI_ENTRY("memcached."key, default_value, PHP_INI_ALL, update_fn, memc.gkey, zend_php_memcached_globals, php_memcached_globals)
328342
@@ -357,6 +371,7 @@ PHP_INI_BEGIN()
357371 MEMC_SESSION_INI_BOOL ("binary_protocol" , "1" , OnUpdateBool , binary_protocol_enabled )
358372#endif
359373 MEMC_SESSION_INI_BOOL ("consistent_hash" , "1" , OnUpdateBool , consistent_hash_enabled )
374+ MEMC_SESSION_INI_BOOL ("consistent_hash_type" , "ketama" , OnUpdateConsistentHash , consistent_hash_type )
360375 MEMC_SESSION_INI_ENTRY ("number_of_replicas" , "0" , OnUpdateLongGEZero , number_of_replicas )
361376 MEMC_SESSION_INI_BOOL ("randomize_replica_read" , "0" , OnUpdateBool , randomize_replica_read_enabled )
362377 MEMC_SESSION_INI_BOOL ("remove_failed_servers" , "0" , OnUpdateBool , remove_failed_servers_enabled )
@@ -4263,6 +4278,7 @@ PHP_GINIT_FUNCTION(php_memcached)
42634278 php_memcached_globals -> session .lock_expiration = 30 ;
42644279 php_memcached_globals -> session .binary_protocol_enabled = 1 ;
42654280 php_memcached_globals -> session .consistent_hash_enabled = 1 ;
4281+ php_memcached_globals -> session .consistent_hash_type = MEMCACHED_BEHAVIOR_KETAMA ;
42664282 php_memcached_globals -> session .number_of_replicas = 0 ;
42674283 php_memcached_globals -> session .server_failure_limit = 1 ;
42684284 php_memcached_globals -> session .randomize_replica_read_enabled = 1 ;
0 commit comments