Skip to content

Commit 1f3ae25

Browse files
committed
Merge pull request #30 from gureedo/master
session replication feature
2 parents 3574b28 + cc7b0de commit 1f3ae25

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

memcached.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ memcached.sess_prefix = "memc.sess.key."
2020
; memcached session binary mode
2121
memcached.sess_binary = Off
2222

23+
; memcached session number of replicas
24+
memcached.sess_number_of_replicas = 0
25+
26+
; memcached session replica read randomize
27+
memcached.sess_randomize_replica_read = Off
28+
2329
; Set the compression type
2430
; valid values are: fastlz, zlib
2531
; the default is fastlz

php_memcached.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@ PHP_INI_BEGIN()
288288
STD_PHP_INI_ENTRY("memcached.sess_binary", "0", PHP_INI_ALL, OnUpdateBool, sess_binary_enabled, zend_php_memcached_globals, php_memcached_globals)
289289
STD_PHP_INI_ENTRY("memcached.sess_lock_wait", "150000", PHP_INI_ALL, OnUpdateLongGEZero,sess_lock_wait, zend_php_memcached_globals, php_memcached_globals)
290290
STD_PHP_INI_ENTRY("memcached.sess_prefix", "memc.sess.key.", PHP_INI_ALL, OnUpdateString, sess_prefix, zend_php_memcached_globals, php_memcached_globals)
291+
STD_PHP_INI_ENTRY("memcached.sess_number_of_replicas", "0", PHP_INI_ALL, OnUpdateLongGEZero, sess_number_of_replicas, zend_php_memcached_globals, php_memcached_globals)
292+
STD_PHP_INI_ENTRY("memcached.sess_randomize_replica_read", "0", PHP_INI_ALL, OnUpdateBool, sess_randomize_replica_read, zend_php_memcached_globals, php_memcached_globals)
291293
#endif
292294
STD_PHP_INI_ENTRY("memcached.compression_type", "fastlz", PHP_INI_ALL, OnUpdateCompressionType, compression_type, zend_php_memcached_globals, php_memcached_globals)
293295
STD_PHP_INI_ENTRY("memcached.compression_factor", "1.3", PHP_INI_ALL, OnUpdateReal, compression_factor, zend_php_memcached_globals, php_memcached_globals)
@@ -3039,6 +3041,8 @@ static void php_memc_init_globals(zend_php_memcached_globals *php_memcached_glob
30393041
MEMC_G(sess_locked) = 0;
30403042
MEMC_G(sess_lock_key) = NULL;
30413043
MEMC_G(sess_lock_key_len) = 0;
3044+
MEMC_G(sess_number_of_replicas) = 0;
3045+
MEMC_G(sess_randomize_replica_read) = 0;
30423046
#endif
30433047
MEMC_G(serializer_name) = NULL;
30443048
MEMC_G(serializer) = SERIALIZER_DEFAULT;

php_memcached.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ ZEND_BEGIN_MODULE_GLOBALS(php_memcached)
6666
zend_bool sess_locked;
6767
char* sess_lock_key;
6868
int sess_lock_key_len;
69+
int sess_number_of_replicas;
70+
zend_bool sess_randomize_replica_read;
6971
#endif
7072
char *serializer_name;
7173
enum memcached_serializer serializer;

php_memcached_session.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,17 @@ PS_OPEN_FUNC(memcached)
195195
}
196196
}
197197

198+
if (MEMC_G(sess_number_of_replicas) > 0) {
199+
if (memcached_behavior_set(memc_sess->memc_sess, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, (uint64_t) MEMC_G(sess_number_of_replicas)) == MEMCACHED_FAILURE) {
200+
php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to set memcached session number of replicas");
201+
return FAILURE;
202+
}
203+
if (memcached_behavior_set(memc_sess->memc_sess, MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ, (uint64_t) MEMC_G(sess_randomize_replica_read)) == MEMCACHED_FAILURE) {
204+
php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed to set memcached session randomize replica read");
205+
return FAILURE;
206+
}
207+
}
208+
198209
return SUCCESS;
199210
}
200211
}

0 commit comments

Comments
 (0)