@@ -227,6 +227,33 @@ static PHP_INI_MH(OnUpdateCompressionType)
227227 return OnUpdateString (entry , new_value , new_value_length , mh_arg1 , mh_arg2 , mh_arg3 , stage TSRMLS_CC );
228228}
229229
230+ static PHP_INI_MH (OnUpdateSerializer )
231+ {
232+ if (!new_value ) {
233+ MEMC_G (serializer ) = SERIALIZER_DEFAULT ;
234+ } else if (new_value_length == sizeof ("php" ) - 1 &&
235+ strncmp (new_value , "php" , sizeof ("php" ) - 1 ) == 0 ) {
236+ MEMC_G (serializer ) = SERIALIZER_PHP ;
237+ #ifdef HAVE_MEMCACHE_IGBINARY
238+ } else if (new_value_length == sizeof ("igbinary" ) - 1 &&
239+ strncmp (new_value , "igbinary" , sizeof ("igbinary" ) - 1 ) == 0 ) {
240+ MEMC_G (serializer ) = SERIALIZER_IGBINARY ;
241+ #endif // IGBINARY
242+ #ifdef HAVE_JSON_API
243+ } else if (new_value_length == sizeof ("json" ) - 1 &&
244+ strncmp (new_value , "json" , sizeof ("json" ) - 1 ) == 0 ) {
245+ MEMC_G (serializer ) = SERIALIZER_JSON ;
246+ } else if (new_value_length == sizeof ("json_array" ) - 1 &&
247+ strncmp (new_value , "json_array" , sizeof ("json_array" ) - 1 ) == 0 ) {
248+ MEMC_G (serializer ) = SERIALIZER_JSON_ARRAY ;
249+ #endif // JSON
250+ } else {
251+ return FAILURE ;
252+ }
253+
254+ return OnUpdateString (entry , new_value , new_value_length , mh_arg1 , mh_arg2 , mh_arg3 , stage TSRMLS_CC );
255+ }
256+
230257/* {{{ INI entries */
231258PHP_INI_BEGIN ()
232259#if HAVE_MEMCACHED_SESSION
@@ -238,6 +265,7 @@ PHP_INI_BEGIN()
238265 STD_PHP_INI_ENTRY ("memcached.compression_factor" , "1.3" , PHP_INI_ALL , OnUpdateReal , compression_factor , zend_php_memcached_globals , php_memcached_globals )
239266 STD_PHP_INI_ENTRY ("memcached.compression_threshold" , "2000" , PHP_INI_ALL , OnUpdateLong , compression_threshold , zend_php_memcached_globals , php_memcached_globals )
240267
268+ STD_PHP_INI_ENTRY ("memcached.serializer" , SERIALIZER_DEFAULT_NAME , PHP_INI_ALL , OnUpdateSerializer , serializer_name , zend_php_memcached_globals , php_memcached_globals )
241269PHP_INI_END ()
242270/* }}} */
243271
@@ -2565,11 +2593,8 @@ static void php_memc_init_globals(zend_php_memcached_globals *php_memcached_glob
25652593 MEMC_G (sess_lock_key ) = NULL ;
25662594 MEMC_G (sess_lock_key_len ) = 0 ;
25672595#endif
2568- #ifdef HAVE_MEMCACHE_IGBINARY
2569- MEMC_G (serializer ) = SERIALIZER_IGBINARY ;
2570- #else
2571- MEMC_G (serializer ) = SERIALIZER_PHP ;
2572- #endif
2596+ MEMC_G (serializer_name ) = NULL ;
2597+ MEMC_G (serializer ) = SERIALIZER_DEFAULT ;
25732598 MEMC_G (compression_type ) = NULL ;
25742599 MEMC_G (compression_type_real ) = COMPRESSION_TYPE_ZLIB ;
25752600 MEMC_G (compression_factor ) = 1.30 ;
0 commit comments