* $val = $mc->get('key');
*
* @author Ryan T. Dean <rtdean@cytherianage.net>
- * @package memcached-client
* @version 0.1.2
*/
// {{{ requirements
// }}}
-// {{{ constants
-// {{{ flags
-
-/**
- * Flag: indicates data is serialized
- */
-define("MEMCACHE_SERIALIZED", 1<<0);
-
-/**
- * Flag: indicates data is compressed
- */
-define("MEMCACHE_COMPRESSED", 1<<1);
-
-// }}}
-
-/**
- * Minimum savings to store data compressed
- */
-define("COMPRESSION_SAVINGS", 0.20);
-
-// }}}
-
// {{{ class memcached
/**
* memcached client class implemented using (p)fsockopen()
*
* @author Ryan T. Dean <rtdean@cytherianage.net>
- * @addtogroup Cache
+ * @ingroup Cache
*/
class memcached
{
// {{{ properties
// {{{ public
+ // {{{ constants
+ // {{{ flags
+
+ /**
+ * Flag: indicates data is serialized
+ */
+ const SERIALIZED = 1;
+
+ /**
+ * Flag: indicates data is compressed
+ */
+ const COMPRESSED = 2;
+
+ // }}}
+
+ /**
+ * Minimum savings to store data compressed
+ */
+ const COMPRESSION_SAVINGS = 0.20;
+
+ // }}}
+
+
/**
* Command statistics
*
/**
* At how many bytes should we compress?
*
- * @var integer
+ * @var integer
* @access private
*/
var $_compress_threshold;
/**
* Total # of bit buckets we have
*
- * @var integer
+ * @var integer
* @access private
*/
var $_bucketcount;
/**
* # of total servers we have
*
- * @var integer
+ * @var integer
* @access private
*/
var $_active;
$fname = 'memcached::get';
wfProfileIn( $fname );
+ if ( $this->_debug ) {
+ $this->_debugprint( "get($key)\n" );
+ }
+
if (!$this->_active) {
wfProfileOut( $fname );
return false;
if ($this->_debug)
foreach ($val as $k => $v)
- $this->_debugprint(@sprintf("MemCache: sock %s got %s => %s\r\n", serialize($sock), $k, $v));
+ $this->_debugprint(sprintf("MemCache: sock %s got %s\n", serialize($sock), $k));
wfProfileOut( $fname );
return @$val[$key];
if (!$this->_active)
return false;
- $this->stats['get_multi']++;
+ @$this->stats['get_multi']++;
$sock_keys = array();
-
+
foreach ($keys as $key)
{
$sock = $this->get_sock($key);
if ($this->_debug)
foreach ($val as $k => $v)
- $this->_debugprint(sprintf("MemCache: got %s => %s\r\n", $k, $v));
+ $this->_debugprint(sprintf("MemCache: got %s\n", $k));
return $val;
}
if (is_resource($sock)) {
$this->_flush_read_buffer($sock);
return $sock;
- }
- $hv += $this->_hashfunc($tries . $realkey);
+ }
+ $hv = $this->_hashfunc( $hv . $realkey );
}
return false;
return false;
}
- if ($this->_have_zlib && $flags & MEMCACHE_COMPRESSED)
+ if ($this->_have_zlib && $flags & memcached::COMPRESSED)
$ret[$rkey] = gzuncompress($ret[$rkey]);
$ret[$rkey] = rtrim($ret[$rkey]);
- if ($flags & MEMCACHE_SERIALIZED)
+ if ($flags & memcached::SERIALIZED)
$ret[$rkey] = unserialize($ret[$rkey]);
} else
if (!is_scalar($val))
{
$val = serialize($val);
- $flags |= MEMCACHE_SERIALIZED;
+ $flags |= memcached::SERIALIZED;
if ($this->_debug)
$this->_debugprint(sprintf("client: serializing data as it is not scalar\n"));
}
$c_val = gzcompress($val, 9);
$c_len = strlen($c_val);
- if ($c_len < $len*(1 - COMPRESSION_SAVINGS))
+ if ($c_len < $len*(1 - memcached::COMPRESSION_SAVINGS))
{
if ($this->_debug)
$this->_debugprint(sprintf("client: compressing data; was %d bytes is now %d bytes\n", $len, $c_len));
$val = $c_val;
$len = $c_len;
- $flags |= MEMCACHE_COMPRESSED;
+ $flags |= memcached::COMPRESSED;
}
}
if (!$this->_safe_fwrite($sock, "$cmd $key $flags $exp $len\r\n$val\r\n"))
if ($this->_debug)
{
- if ($flags & MEMCACHE_COMPRESSED)
- $val = 'compressed data';
- $this->_debugprint(sprintf("MemCache: %s %s => %s (%s)\n", $cmd, $key, $val, $line));
+ $this->_debugprint(sprintf("%s %s (%s)\n", $cmd, $key, $line));
}
if ($line == "STORED")
return true;
// vim: sts=3 sw=3 et
// }}}
-