. * * 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 $enabled = false; var $supported = false; static private $instance = NULL; private function __construct( $workspace ) { $this->enabled = MEMCACHED_ENABLED; $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 "
| 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"]." |