summaryrefslogtreecommitdiffstats
path: root/memcached-pr330.patch
blob: aa6739f2a90fba27a088d3c91ed91494b50c2b9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
From d81697f7a04646edbbed8ecf34cb524ab1ff8d3c Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
Date: Mon, 20 Feb 2017 19:27:39 +0100
Subject: [PATCH 1/2] Refresh memcached.ini provided configuration

- remove deprecated options
- add missing memcached.sess_server_failure_limit option
- comment all options default value (only needed when not default value)
  see php.ini-production which follow this convention
---
 memcached.ini | 56 +++++++++++++++++++++++++++-----------------------------
 1 file changed, 27 insertions(+), 29 deletions(-)

diff --git a/memcached.ini b/memcached.ini
index 59001aa..fa9a6fd 100644
--- a/memcached.ini
+++ b/memcached.ini
@@ -2,45 +2,39 @@
 ; Use session locking
 ; valid values: On, Off
 ; the default is On
-memcached.sess_locking = On
-
-; !! DEPRECATED AND REMOVED in 3.x !!
-; memcached.sess_lock_wait = 150000
-
-; !! DEPRECATED AND REMOVED in 3.x !!
-; memcached.sess_lock_max_wait = 0;
+;memcached.sess_locking = On
 
 ; The minimum time, in milliseconds, to wait between session lock attempts.
 ; This value is double on each lock retry until memcached.sess_lock_wait_max
 ; is reached, after which any further retries will take sess_lock_wait_max seconds.
 ; Default is 1000.
-memcached.sess_lock_wait_min = 1000;
+;memcached.sess_lock_wait_min = 1000;
 
 ; The maximum time, in milliseconds, to wait between session lock attempts.
 ; Default is 2000.
-memcached.sess_lock_wait_max = 2000;
+;memcached.sess_lock_wait_max = 2000;
 
 ; The number of times to retry locking the session lock, not including the first attempt.
 ; Default is 5.
-memcached.sess_lock_retries = 5;
+;memcached.sess_lock_retries = 5;
 
 ; The time, in seconds, before a lock should release itself.
 ; Setting to 0 results in the default behaviour, which is to
 ; use the memcached.sess_lock_max_wait setting. If that is
 ; also 0, max_execution_time will be used.
-memcached.sess_lock_expire = 0;
+;memcached.sess_lock_expire = 0;
 
 ; memcached session key prefix
 ; valid values are strings less than 219 bytes long
 ; the default value is "memc.sess.key."
-memcached.sess_prefix = "memc.sess.key."
+;memcached.sess_prefix = "memc.sess.key."
 
 ; Whether or not to re-use the memcached connections corresponding to the value(s)
 ; of session.save_path after the execution of the script ends.
 ; Don't use this if certain settings (e.g. SASL settings, sess_binary_protocol) would
 ; be overridden between requests.
 ; Default is Off.
-memcached.sess_persistent = Off
+;memcached.sess_persistent = Off
 
 ; memcached session consistent hash mode
 ; if set to On, consistent hashing (libketama) is used
@@ -48,11 +42,15 @@ memcached.sess_persistent = Off
 ; When consistent hashing is used, one can add or remove cache
 ; node(s) without messing up too much with existing keys
 ; default is On
-memcached.sess_consistent_hash = On
+;memcached.sess_consistent_hash = On
 
 ; Allow failed memcached server to automatically be removed.
 ; Default is Off. (In previous versions, this setting was called memcached.sess_remove_failed)
-memcached.sess_remove_failed_servers = Off
+;memcached.sess_remove_failed_servers = Off
+
+; Set this value to enable the server be removed after
+; configured number of continuous times connection failure.
+;memcached.sess_server_failure_limit = 0
 
 ; Write data to a number of additional memcached servers
 ; This is "poor man's HA" as libmemcached calls it.
@@ -61,34 +59,34 @@ memcached.sess_remove_failed_servers = Off
 ; from a replica. However, if the failed memcache server
 ; becomes available again it will read the session from there
 ; which could have old data or no data at all
-memcached.sess_number_of_replicas = 0
+;memcached.sess_number_of_replicas = 0
 
 ; Use the memcached binary protocol for memcached sessions (Instead of the text protocol)
 ; libmemcached replicas work only if binary mode is enabled.
 ; However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled.
 ; Default is On. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
-memcached.sess_binary_protocol = On
+;memcached.sess_binary_protocol = On
 
 ; memcached session replica read randomize
-memcached.sess_randomize_replica_read = Off
+;memcached.sess_randomize_replica_read = Off
 
 ; memcached connect timeout value
 ; In non-blocking mode this changes the value of the timeout
 ; during socket connection in milliseconds. Specifying -1 means an infinite timeout.
-memcached.sess_connect_timeout = 1000
+;memcached.sess_connect_timeout = 1000
 
 ; Session SASL username
 ; Both username and password need to be set for SASL to be enabled
 ; In addition to this memcached.use_sasl needs to be on
-memcached.sess_sasl_username = NULL
+;memcached.sess_sasl_username = NULL
 
 ; Session SASL password
-memcached.sess_sasl_password = NULL
+;memcached.sess_sasl_password = NULL
 
 ; Set the compression type
 ; valid values are: fastlz, zlib
 ; the default is fastlz
-memcached.compression_type = "fastlz"
+;memcached.compression_type = "fastlz"
 
 ; Compression factor
 ; Store compressed value only if the compression
@@ -98,13 +96,13 @@ memcached.compression_type = "fastlz"
 ;    plain_len > comp_len * factor
 ;
 ; the default value is 1.3 (23% space saving)
-memcached.compression_factor = "1.3"
+;memcached.compression_factor = "1.3"
 
 ; The compression threshold
 ;
 ; Do not compress serialized values below this threshold.
 ; the default is 2000 bytes
-memcached.compression_threshold = 2000
+;memcached.compression_threshold = 2000
 
 ; Set the default serializer for new memcached objects.
 ; valid values are: php, igbinary, json, json_array, msgpack
@@ -119,14 +117,14 @@ memcached.compression_threshold = 2000
 ; msgpack - a cross-language binary serializer
 ;
 ; The default is igbinary if available, then msgpack if available, then php otherwise.
-memcached.serializer = "igbinary"
+;memcached.serializer = "igbinary"
 
 ; The amount of retries for failed store commands.
 ; This mechanism allows transparent fail-over to secondary servers when
 ; set/increment/decrement/setMulti operations fail on the desired server in a multi-server
 ; environment.
 ; the default is 2
-memcached.store_retry_count = 2
+;memcached.store_retry_count = 2
 
 ; Sets the default for consistent hashing for new connections.
 ; (To configure consistent hashing for session connections,
@@ -137,7 +135,7 @@ memcached.store_retry_count = 2
 ; When consistent hashing is used, one can add or remove cache
 ; node(s) without messing up too much with existing keys
 ; default is Off
-memcached.default_consistent_hash = Off
+;memcached.default_consistent_hash = Off
 
 ; Sets the default memcached protocol for new connections.
 ; (To configure the memcached protocol for connections used by sessions,
@@ -146,7 +144,7 @@ memcached.default_consistent_hash = Off
 ; If set to On, the memcached binary protocol is used by default.
 ; If set to Off, the memcached text protocol is used.
 ; Default is Off
-memcached.default_binary_protocol = Off
+;memcached.default_binary_protocol = Off
 
 ; Sets the default memcached connection timeout for new connections.
 ; (To configure the memcached connection timeout for sessions,
@@ -155,4 +153,4 @@ memcached.default_binary_protocol = Off
 ; during socket connection in milliseconds. Specifying -1 means an infinite timeout.
 ; Specifying 0 means using the memcached library's default connection timeout.
 ; Default is 0.
-memcached.default_connect_timeout = 0
+;memcached.default_connect_timeout = 0

From 0a90491dd13af8dfc9a2e1ee600590fe9245ac50 Mon Sep 17 00:00:00 2001
From: Remi Collet <fedora@famillecollet.com>
Date: Mon, 20 Feb 2017 19:32:37 +0100
Subject: [PATCH 2/2] set sess_binary_protocol off by default with older
 libmemcached

---
 memcached.ini   | 4 +++-
 php_memcached.c | 4 ++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/memcached.ini b/memcached.ini
index fa9a6fd..6d05da3 100644
--- a/memcached.ini
+++ b/memcached.ini
@@ -64,7 +64,9 @@
 ; Use the memcached binary protocol for memcached sessions (Instead of the text protocol)
 ; libmemcached replicas work only if binary mode is enabled.
 ; However, certain proxies (such as twemproxy) will work only if the binary protocol is disabled.
-; Default is On. In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
+; In older versions of php-memcached, this setting was Off and was called memcached.sess_binary.
+; Default is On with libmemcached 1.0.18 or newer.
+; Default is Off with older version.
 ;memcached.sess_binary_protocol = On
 
 ; memcached session replica read randomize
diff --git a/php_memcached.c b/php_memcached.c
index 1967332..b920970 100644
--- a/php_memcached.c
+++ b/php_memcached.c
@@ -332,7 +332,11 @@ PHP_INI_BEGIN()
 	MEMC_SESSION_INI_ENTRY("lock_wait_max",          "2000",       OnUpdateLongGEZero,     lock_wait_max)
 	MEMC_SESSION_INI_ENTRY("lock_retries",           "5",          OnUpdateLong,           lock_retries)
 	MEMC_SESSION_INI_ENTRY("lock_expire",            "0",          OnUpdateLongGEZero,     lock_expiration)
+#if defined(LIBMEMCACHED_VERSION_HEX) && LIBMEMCACHED_VERSION_HEX < 0x01000018
+	MEMC_SESSION_INI_ENTRY("binary_protocol",        "0",          OnUpdateBool,           binary_protocol_enabled)
+#else
 	MEMC_SESSION_INI_ENTRY("binary_protocol",        "1",          OnUpdateBool,           binary_protocol_enabled)
+#endif
 	MEMC_SESSION_INI_ENTRY("consistent_hash",        "1",          OnUpdateBool,           consistent_hash_enabled)
 	MEMC_SESSION_INI_ENTRY("number_of_replicas",     "0",          OnUpdateLongGEZero,     number_of_replicas)
 	MEMC_SESSION_INI_ENTRY("randomize_replica_read", "0",          OnUpdateLongGEZero,     randomize_replica_read_enabled)