note 75997 added to ref.memcache

From: Date: Tue, 26 Jun 2007 08:10:09 +0000
Subject: note 75997 added to ref.memcache
Groups: php.notes 
Request: Send a blank email to php-notes+get-127976@lists.php.net to get a copy of this message
Here is a PHP4 backport of the above MemcacheAggregator class: <?php class MemcachedAggregator { var $connections; var $_servers; function MemcachedAggregator($servers) { $this->_servers = $servers; // Attempt to establish/retrieve persistent connections to all servers. // If any of them fail, they just don't get put into our list of active // connections. $this->connections = array(); for ($i = 0, $n = count($servers); $i < $n; $i++) { $server = $servers[$i]; $con = memcache_connect($server['host']); //memcache_debug(1); //$memcache = &new Memcache; //$con = $memcache->connect($server['host']); if (!($con == false)) { $this->connections[] = &$con; } } } function _getConForKey($key) { $hashCode = 0; for ($i = 0, $len = strlen($key); $i < $len; $i++) { $hashCode = (int)(($hashCode*33)+ord($key[$i])) & 0x7fffffff; } if (($ns = count($this->connections)) > 0) { return $this->connections[$hashCode%$ns]; //return $this->connections[0]; } return false; } function debug($on_off) { $result = false; for ($i = 0; $i < count($this->connections); $i++) { if ($this->connections[$i]->debug($on_off)) $result = true; } return $result; } function flush() { $result = false; for ($i = 0; $i < count($this->connections); $i++) { if ($this->connections[$i]->flush()) $result = true; } return $result; } /// The following are not implemented: ///getStats() ///getVersion() function get($key) { if (is_array($key)) { $dest = array(); foreach ($key as $subkey) { $val = get($subkey); if (!($val === false)) $dest[$subkey] = $val; } return $dest; } else { $conn = &$this->_getConForKey($key); return $conn->get($key); } } function set($key, $var, $compress=0, $expire=0) { $conn = &$this->_getConForKey($key); return $conn->set($key, $var, $compress, $expire); } function add($key, $var, $compress=0, $expire=0) { $conn = &$this->_getConForKey($key); return $conn->add($key, $var, $compress, $expire); } function replace($key, $var, $compress=0, $expire=0) { $conn = &$this->_getConForKey($key); return $conn->replace($key, $var, $compress, $expire); } function delete($key, $timeout=0) { $conn = &$this->_getConForKey($key); return $conn->delete($key, $timeout); } function increment($key, $value=1) { $conn = &$this->_getConForKey($key); return $conn->increment($key, $value); } function decrement($key, $value=1) { $conn = &$this->_getConForKey($key); return $conn->decrement($key, $value); } function showStats($server=null) { $stats_out = ''; if($server == null) { $i=0; foreach($this->connections as $conn) { $server = $this->_servers[$i]; $stats_array = memcache_get_stats($conn); $stats_out .= "</br><b>Server: ".$server['host'].": </b><br/>"; foreach($stats_array as $key => $val) { $stats_out .= "$key => $val <br/>"; } $i++; } } return $stats_out; } } ?> ---- Server IP: 193.95.141.37 Probable Submitter: 86.40.183.138 ---- Manual Page -- http://www.php.net/manual/en/ref.memcache.php Edit -- https://master.php.net/note/edit/75997 Del: integrated -- https://master.php.net/note/delete/75997/integrated Del: useless -- https://master.php.net/note/delete/75997/useless Del: bad code -- https://master.php.net/note/delete/75997/bad+code Del: spam -- https://master.php.net/note/delete/75997/spam Del: non-english -- https://master.php.net/note/delete/75997/non-english Del: in docs -- https://master.php.net/note/delete/75997/in+docs Del: other reasons-- https://master.php.net/note/delete/75997 Reject -- https://master.php.net/note/reject/75997 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#127976) next »