. * * For more information, contact Colosa Inc, 2566 Le Jeune Rd., * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ /** * The ProcessMaker memcached class * @package workflow.engine.ProcessMaker */ class PMmemcached { const ONE_MINUTE = 60; const ONE_HOUR = 3600; const TWO_HOURS = 7200; const EIGHT_HOURS = 28800; var $version; var $mem; var $connected = false; var $supported = false; static private $instance = NULL; private function __construct( $workspace ) { $this->connected = false; $this->workspace = $workspace; if (class_exists('Memcached')) { $this->mem = new Memcached(); $this->class = 'Memcached'; } else { if (class_exists('Memcache')) { $this->mem = new Memcache(); $this->class = 'Memcache'; $this->supported = true; $this->connected = @$this->mem->connect( MEMCACHED_SERVER , 11211); if ( $this->connected ) $this->version = $this->mem->getVersion(); } } if ( ! MEMCACHED_ENABLED ) { $this->connected = false; return false; } } /** * to get singleton instance * * @access public * @return object */ function &getSingleton( $workspace ) { if (self::$instance == NULL) { self::$instance = new PMmemcached( $workspace ); } return self::$instance; } function set($key, $object, $timeout=0) { if (! $this->connected ) return false; $this->mem->set( $this->workspace . '_' . $key, $object, false, $timeout) ; } function get($key) { if (! $this->connected ) return false; return $this->mem->get( $this->workspace . '_' . $key) ; } function add($key, $value ) { if (! $this->connected ) return false; return $this->mem->add( $this->workspace . '_' . $key, $value ) ; } function increment($key, $value ) { if (! $this->connected ) return false; return $this->mem->increment( $this->workspace . '_' . $key, $value ) ; } function delete($key) { if (! $this->connected ) return false; return $this->mem->delete( $this->workspace . '_' . $key) ; } function flush() { if (! $this->connected ) return false; return $this->mem->flush(); } function getStats() { if (! $this->connected ) return false; return $status = $this->mem->getStats(); } function printDetails() { if (! $this->connected ) return false; $status = $this->mem->getStats(); echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $percCacheHit=((real)$status ["get_hits"]/ (real)$status ["cmd_get"] *100); $percCacheHit=round($percCacheHit,3); $percCacheMiss=100-$percCacheHit; echo ""; echo ""; $MBRead= (real)$status["bytes_read"]/(1024*1024); echo ""; $MBWrite=(real) $status["bytes_written"]/(1024*1024) ; echo ""; $MBSize=(real) $status["limit_maxbytes"]/(1024*1024) ; echo ""; echo ""; echo "
Memcache Server version: ".$status ["version"]."
Number of hours this server has been running " . ($status ["uptime"] /3660) ."
Total number of items stored by this server ever since it started ".$status ["total_items"]."
Number of open connections ".$status ["curr_connections"]."
Total number of connections opened since the server started running ".$status ["total_connections"]."
Number of connection structures allocated by the server ".$status ["connection_structures"]."
Cumulative number of retrieval requests ".$status ["cmd_get"]."
Cumulative number of storage requests ".$status ["cmd_set"]."
Number of keys that have been requested and found present ".$status ["get_hits"]." ($percCacheHit%)
Number of items that have been requested and not found ".$status ["get_misses"]."($percCacheMiss%)
Total number of bytes read by this server from network ".$MBRead." Mega Bytes
Total number of bytes sent by this server to network ".$MBWrite." Mega Bytes
Number of bytes this server is allowed to use for storage.".$MBSize." Mega Bytes
Number of valid items removed from cache to free memory for new items.".$status ["evictions"]."
"; } }