From f0b0f73e02f96a9e208e1b378953bb8e808db965 Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Sat, 5 May 2012 18:50:09 +0200 Subject: [PATCH] [Session] Native storage handlers should not update the global ini config --- .../Handler/NativeMemcacheSessionHandler.php | 22 +++++++------------ .../Handler/NativeMemcachedSessionHandler.php | 13 ++++++----- .../Handler/NativeSqliteSessionHandler.php | 21 +++--------------- 3 files changed, 19 insertions(+), 37 deletions(-) diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcacheSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcacheSessionHandler.php index 0b9c623558155..f783f671b95d1 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcacheSessionHandler.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcacheSessionHandler.php @@ -26,7 +26,9 @@ class NativeMemcacheSessionHandler extends NativeSessionHandler * Constructor. * * @param string $savePath Path of memcache server. - * @param array $options Session configuration options. + * @param array $options Memcache ini values + * + * @throws \RuntimeException If memcache is not available */ public function __construct($savePath = 'tcp://127.0.0.1:11211?persistent=0', array $options = array()) { @@ -45,24 +47,16 @@ public function __construct($savePath = 'tcp://127.0.0.1:11211?persistent=0', ar } /** - * Set any memcached ini values. + * Set any memcache ini values. + * + * @param array $options Memcache ini values * * @see http://php.net/memcache.ini */ protected function setOptions(array $options) { - $validOptions = array_flip(array( - 'memcache.allow_failover', 'memcache.max_failover_attempts', - 'memcache.chunk_size', 'memcache.default_port', 'memcache.hash_strategy', - 'memcache.hash_function', 'memcache.protocol', 'memcache.redundancy', - 'memcache.session_redundancy', 'memcache.compress_threshold', - 'memcache.lock_timeout', - )); - - foreach ($options as $key => $value) { - if (isset($validOptions[$key])) { - ini_set($key, $value); - } + if (isset($options['memcache.session_redundancy'])) { + ini_set('memcache.session_redundancy', $options['memcache.session_redundancy']); } } } diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcachedSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcachedSessionHandler.php index ee9d75475ba82..dadd1f59eb6c1 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcachedSessionHandler.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeMemcachedSessionHandler.php @@ -26,7 +26,9 @@ class NativeMemcachedSessionHandler extends NativeSessionHandler * Constructor. * * @param string $savePath Comma separated list of servers: e.g. memcache1.example.com:11211,memcache2.example.com:11211 - * @param array $options Session configuration options. + * @param array $options Memcached ini values + * + * @throws \RuntimeException When the memcached extension is not available */ public function __construct($savePath = '127.0.0.1:11211', array $options = array()) { @@ -47,15 +49,16 @@ public function __construct($savePath = '127.0.0.1:11211', array $options = arra /** * Set any memcached ini values. * + * @param array $options Memcached ini values + * * @see https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini */ protected function setOptions(array $options) { $validOptions = array_flip(array( - 'memcached.sess_locking', 'memcached.sess_lock_wait', - 'memcached.sess_prefix', 'memcached.compression_type', - 'memcached.compression_factor', 'memcached.compression_threshold', - 'memcached.serializer', + 'memcached.sess_locking', + 'memcached.sess_lock_wait', + 'memcached.sess_prefix' )); foreach ($options as $key => $value) { diff --git a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSqliteSessionHandler.php b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSqliteSessionHandler.php index ac034c29389fe..187ec627b94ca 100644 --- a/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSqliteSessionHandler.php +++ b/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSqliteSessionHandler.php @@ -24,9 +24,10 @@ class NativeSqliteSessionHandler extends NativeSessionHandler * Constructor. * * @param string $savePath Path to SQLite database file itself. - * @param array $options Session configuration options. + * + * @throws \RuntimeException When the sqlite extension is not available */ - public function __construct($savePath, array $options = array()) + public function __construct($savePath) { if (!extension_loaded('sqlite')) { throw new \RuntimeException('PHP does not have "sqlite" session module registered'); @@ -38,21 +39,5 @@ public function __construct($savePath, array $options = array()) ini_set('session.save_handler', 'sqlite'); ini_set('session.save_path', $savePath); - - $this->setOptions($options); - } - - /** - * Set any sqlite ini values. - * - * @see http://php.net/sqlite.configuration - */ - protected function setOptions(array $options) - { - foreach ($options as $key => $value) { - if (in_array($key, array('sqlite.assoc_case'))) { - ini_set($key, $value); - } - } } }