note 104269 added to memcached.construct

From: Date: Sat, 04 Jun 2011 20:32:40 +0000
Subject: note 104269 added to memcached.construct
Groups: php.notes 
Request: Send a blank email to php-notes+get-180261@lists.php.net to get a copy of this message
If you're wanting to get started with Memcached on a relatively small project but need some scalability then it can make sense to allow $persistent_id to also denote both a key prefix and a server set which you define yourself. This keeps both key separation and allocation of data sets to certain server(s) incredibly simple throughout the project's life, without hampering any of your options. <?php // Here is the array which we will add to in the future $GLOBALS['memcached-sets'] = array ( '_' => array ( array('localhost', 11211) ) ); define('DEFAULT_MEMCACHED_SET', '_'); function mcache( $persistent_id=DEFAULT_MEMCACHED_SET ) { // one instantiation per-connection per-request static $memcached_instances = array(); if( array_key_exists($persistent_id, $memcached_instances)) { $instance = $memcached_instances[$persistent_id]; }else{ $instance = new Memcached($persistent_id); $instance->setOption(Memcached::OPT_PREFIX_KEY, $persistent_id); $instance->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); // advisable option // Add servers if no connections listed. Get server set by $persistent_id or use default set. // In a production environment with multiple server sets you may wish to prevent typos from silently adding data // to the default pool, in which case return an error on no match instead of defaulting if( !count($instance->getServerList()) ) { $servers = array_key_exists($persistent_id, $GLOBALS['memcached-sets']) ? $GLOBALS['memcached-sets'][$persistent_id] : $GLOBALS['memcached-sets'][DEFAULT_MEMCACHED_SET]; $instance->addServers($servers); } $memcached_instances[$persistent_id] = $instance; } return $instance; } // simple example mcache()->set('foo', 'bar'); mcache('myset')->set('foo', 'baz'); var_dump(mcache()->get('foo'), mcache('myset')->get('foo')); ?> string(3) "bar" string(3) "baz" Just remember to keep your $persistent_ids short as they infringe upon your maximum key length. Happy coding! :) ---- Server IP: 87.124.126.138 Probable Submitter: 87.106.252.91 (proxied: 87.106.252.91) ---- Manual Page -- http://www.php.net/manual/en/memcached.construct.php Edit -- https://master.php.net/note/edit/104269 Del: integrated -- https://master.php.net/note/delete/104269/integrated Del: useless -- https://master.php.net/note/delete/104269/useless Del: bad code -- https://master.php.net/note/delete/104269/bad+code Del: spam -- https://master.php.net/note/delete/104269/spam Del: non-english -- https://master.php.net/note/delete/104269/non-english Del: in docs -- https://master.php.net/note/delete/104269/in+docs Del: other reasons-- https://master.php.net/note/delete/104269 Reject -- https://master.php.net/note/reject/104269 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#180261) next »