Пример #1
0
 /**
  * constructor of the handler - initialises Memcached object
  *
  * @return bool
  * 
  */
 function __construct()
 {
     #this ensures to write down and close the session when destroying the handler object
     register_shutdown_function("session_write_close");
     $this->memcache = new Memcache();
     $this->memcache->connect('MEMCACHE_NODE_ADDRESS_HERE', 11211);
     $this->lifeTime = intval(ini_get("session.cookie_lifetime"));
     $this->initSessionData = null;
     return true;
 }
Пример #2
0
 public function _before(TestCase $test)
 {
     if (class_exists('\\Memcache')) {
         $this->memcache = new \Memcache();
         $this->memcache->connect($this->config['host'], $this->config['port']);
     } elseif (class_exists('\\Memcached')) {
         $this->memcache = new \Memcached();
         $this->memcache->addServer($this->config['host'], $this->config['port']);
     } else {
         throw new ModuleConfigException(__CLASS__, 'Memcache classes not loaded');
     }
 }
Пример #3
0
 /**
  * Connect to the cache server(s).
  *
  * @throws CacheException
  * @access private
  */
 private function connect()
 {
     $this->connected = false;
     switch (NN_CACHE_TYPE) {
         case self::TYPE_REDIS:
             if ($this->socketFile === false) {
                 $servers = unserialize(NN_CACHE_HOSTS);
                 foreach ($servers as $server) {
                     if ($this->server->connect($server['host'], $server['port'], (double) NN_CACHE_TIMEOUT) === false) {
                         throw new CacheException('Error connecting to the Redis server!');
                     } else {
                         $this->connected = true;
                     }
                 }
             } else {
                 if ($this->server->connect(NN_CACHE_SOCKET_FILE) === false) {
                     throw new CacheException('Error connecting to the Redis server!');
                 } else {
                     $this->connected = true;
                 }
             }
             break;
         case self::TYPE_MEMCACHED:
             $params = $this->socketFile === false ? unserialize(NN_CACHE_HOSTS) : [[NN_CACHE_SOCKET_FILE, 'port' => 0]];
             if ($this->server->addServers($params) === false) {
                 throw new CacheException('Error connecting to the Memcached server!');
             } else {
                 $this->connected = true;
             }
             break;
         case self::TYPE_APC:
             $this->connected = true;
             break;
     }
 }
 public function make($config = null)
 {
     if (!extension_loaded('memcached')) {
         throw new \RuntimeException('Memcached extension was not loaded.');
     }
     $memcached = new \Memcached();
     $memcached->connect($config['host'], $config['port']);
     $cache = new MemcachedCache();
     $cache->setMemcached($memcached);
     return $cache;
 }
    /**
     * Initializes usage of memcache or memcached
     */
    private function __construct()
    {
        $ini = eZINI::instance('merck.ini');
        if ( $ini->hasSection('MemcacheSettings') )
        {
            $this->_host = $ini->variable('MemcacheSettings', 'Host');
            $this->_port = $ini->variable('MemcacheSettings', 'Port');
        }
        elseif(    strpos(ini_get('session.save_handler'), 'memcache') === 0
                && preg_match('#^(?:tcp://)?(?P<memcacheHost>[^:]+):(?P<memcachePort>[^?]+)#', ini_get('session.save_path'), $m)
        ){
            // No memcache settings set, we try to use the session handler one
            $this->_host = $m['memcacheHost'];
            $this->_port = $m['memcachePort'];
        }

        if ( $this->_host )
        {
            if ( extension_loaded('memcached') )
            {
                $this->_memcache = new Memcached();
                $this->_type = self::TYPE_MEMCACHED;
                $this->_isValid = $this->_memcache->addserver( $this->_host, $this->_port );
            }
            elseif( extension_loaded( 'memcache') )
            {
                $this->_memcache = new Memcache();
                $this->_type = self::TYPE_MEMCACHE;
                $this->_isValid = $this->_memcache->connect( $this->_host, $this->_port );
            }
        }

        if ( !$this->isValid() )
        {
            eZDebug::writeError('Could not find any valid memcache configuration or memcache module', 'MemcacheTool');
            // do not break. Any memcache w/r should be fault tolerant in case memcache clears its cache by itself.
        }
    }
Пример #6
0
 public static function memcacheSetup()
 {
     // Memcache provider setup:
     if (MEMCACHE_LIBRARY == 'memcache') {
         $memcache = new \Memcache();
     } else {
         if (MEMCACHE_LIBRARY == 'memcached') {
             $memcache = new \Memcached();
         }
     }
     if (!$memcache->connect(MEMCACHE_HOST, MEMCACHE_PORT)) {
         throw new exception('Unable to connect to Memcache');
     }
     return $memcache;
 }
Пример #7
0
 /**
  * Connect to the cache server(s).
  *
  * @throws CacheException
  * @access private
  */
 private function connect()
 {
     $this->connected = false;
     if ($this->isRedis === true) {
         if ($this->socketFile === false) {
             $servers = unserialize(nZEDb_CACHE_HOSTS);
             foreach ($servers as $server) {
                 if ($this->server->connect($server['host'], $server['port'], (double) nZEDb_CACHE_TIMEOUT) === false) {
                     throw new CacheException('Error connecting to the Redis server!');
                 } else {
                     $this->connected = true;
                 }
             }
         } else {
             if ($this->server->connect(nZEDb_CACHE_SOCKET_FILE) === false) {
                 throw new CacheException('Error connecting to the Redis server!');
             } else {
                 $this->connected = true;
             }
         }
     } else {
         if ($this->socketFile === false) {
             if ($this->server->addServers(unserialize(nZEDb_CACHE_HOSTS)) === false) {
                 throw new CacheException('Error connecting to the Memcached server!');
             } else {
                 $this->connected = true;
             }
         } else {
             if ($this->server->addServers(array(array(nZEDb_CACHE_SOCKET_FILE, 'port' => 0))) === false) {
                 throw new CacheException('Error connecting to the Memcached server!');
             } else {
                 $this->connected = true;
             }
         }
     }
 }
Пример #8
0
 public function import_vars($key = false)
 {
     if (Xcrud_config::$alt_session) {
         if (class_exists('Memcache')) {
             $mc = new Memcache();
             $mc->connect(Xcrud_config::$mc_host, Xcrud_config::$mc_port);
             $data = $mc->get($this->sess_id);
         } elseif (class_exists('Memcached')) {
             $mc = new Memcached();
             $mc->connect(Xcrud_config::$mc_host, Xcrud_config::$mc_port);
             $data = $mc->get($this->sess_id);
         } else {
             self::error('Can\'t use alternative session. Memcache(d) is not available');
         }
         if (!$data) {
             self::error('Can\'t use alternative session. Data is not exist');
         }
         $_SESSION['xcrud_session'] = $this->decrypt($data[0], $data[1]);
         unset($data);
         if (!$_SESSION['xcrud_session']) {
             self::error('Can\'t use alternative session. Data is invalid');
         }
     }
     $inst_name = $this->instance_name;
     foreach ($this->params2save() as $item) {
         $this->{$item} = $_SESSION['xcrud_session'][$inst_name][$item];
     }
     if ($key) {
         $this->key = $key;
     }
 }
Пример #9
0
 /**
  * Connects to a server.
  *
  * @param string $hostname The hostname to connect to
  * @param string $port     The port to connect to
  *
  * @author Benjamin Carl <*****@*****.**>
  * @return Memcached The created instance of memcache
  * @access protected
  * @throws Doozr_Cache_Service_Exception
  */
 protected function connect($hostname, $port)
 {
     $memcache = new Memcached();
     // API requires to add server first
     $memcache->addServer($hostname, $port);
     // Finally we try to connect
     try {
         @$memcache->connect($hostname, $port);
     } catch (Exception $e) {
         throw new Doozr_Cache_Service_Exception(sprintf('Error while connecting to host: "%s" on Port: "%s". Connection failed.', $hostname, $port));
     }
     // return instance on success
     return $memcache;
 }
Пример #10
0
 /**
  * Automatically picks the cache mechanism to use.  If you pick one manually it will use that
  * If there is no config option for $driver in the config, or it's set to 'auto', it will
  * pick the best option based on which cache extensions are installed.
  *
  * @return DoctrineCache\CacheProvider  The cache driver to use
  */
 public function getCacheDriver()
 {
     $setting = $this->driver_setting;
     $driver_name = 'file';
     if (!$setting || $setting == 'auto') {
         if (extension_loaded('apcu')) {
             $driver_name = 'apcu';
         } elseif (extension_loaded('apc')) {
             $driver_name = 'apc';
         } elseif (extension_loaded('wincache')) {
             $driver_name = 'wincache';
         } elseif (extension_loaded('xcache')) {
             $driver_name = 'xcache';
         }
     } else {
         $driver_name = $setting;
     }
     $this->driver_name = $driver_name;
     switch ($driver_name) {
         case 'apc':
             $driver = new DoctrineCache\ApcCache();
             break;
         case 'apcu':
             $driver = new DoctrineCache\ApcuCache();
             break;
         case 'wincache':
             $driver = new DoctrineCache\WinCacheCache();
             break;
         case 'xcache':
             $driver = new DoctrineCache\XcacheCache();
             break;
         case 'memcache':
             $memcache = new \Memcache();
             $memcache->connect($this->config->get('system.cache.memcache.server', 'localhost'), $this->config->get('system.cache.memcache.port', 11211));
             $driver = new DoctrineCache\MemcacheCache();
             $driver->setMemcache($memcache);
             break;
         case 'memcached':
             $memcached = new \Memcached();
             $memcached->connect($this->config->get('system.cache.memcached.server', 'localhost'), $this->config->get('system.cache.memcached.port', 11211));
             $driver = new DoctrineCache\MemcachedCache();
             $driver->setMemcached($memcached);
             break;
         case 'redis':
             $redis = new \Redis();
             $redis->connect($this->config->get('system.cache.redis.server', 'localhost'), $this->config->get('system.cache.redis.port', 6379));
             $driver = new DoctrineCache\RedisCache();
             $driver->setRedis($redis);
             break;
         default:
             $driver = new DoctrineCache\FilesystemCache($this->cache_dir);
             break;
     }
     return $driver;
 }
Пример #11
0
 public function connect()
 {
     $conf = $this->conf;
     if ($this->link) {
         return $this->link;
     }
     if (extension_loaded('Memcache')) {
         $memcache = new Memcache();
     } elseif (extension_loaded('Memcached')) {
         $memcache = new Memcached();
     } else {
         $this->error(2, 'Memcache 扩展不存在。');
         return FALSE;
     }
     $r = $memcache->connect($conf['host'], $conf['port']);
     if (!$r) {
         $this->error(3, '连接 Memcached 服务器失败。');
         return FALSE;
     }
     $this->link = $memcache;
     return $this->link;
 }
Пример #12
0
$modx->tpl = DLTemplate::getInstance($modx);
$modx->fs = \Helpers\FS::getInstance();
switch (true) {
    case function_exists('apc_cache_info'):
        $modx->cache = new \Doctrine\Common\Cache\ApcCache();
        break;
    case class_exists('Memcache'):
        $modx->cache = new \Doctrine\Common\Cache\MemcacheCache();
        $memcache = new Memcache();
        $memcache->connect('localhost', 11211);
        $modx->cache->setMemcache($memcache);
        break;
    case class_exists('Memcached'):
        $modx->cache = new \Doctrine\Common\Cache\MemcachedCache();
        $memcached = new Memcached();
        $memcached->connect('localhost', 11211);
        $modx->cache->setMemcache($memcached);
        break;
    case class_exists('SQLite3'):
        $modx->cache = new \Doctrine\Common\Cache\SQLite3Cache(new SQLite3(MODX_BASE_PATH . 'assets/cache/sqlite.db'), 'cache');
        break;
    default:
        $modx->cache = new Doctrine\Common\Cache\FilesystemCache(MODX_BASE_PATH . 'assets/cache/template/');
}
$modx->cache->setNamespace($modx->getConfig('site_name'));
$moduleDebug = false;
if (!is_ajax() && ($modx->isFrontend() && $modx->getLoginUserID('mgr')) || $modx->isBackend() && isset($_GET['a']) && $_GET['a'] == 112 && $moduleDebug) {
    error_reporting(E_ALL);
    ini_set('display_errors', true);
}
if ($modx->isFrontend() && $modx->getLoginUserID('web') && $modx->user instanceof \modUsers) {
Пример #13
0
<?php

//
// apt-get install php5-memcache
//
$memcache_enabled = extension_loaded("memcached");
if ($memcache_enabled) {
    echo "extension loaded";
} else {
    echo "extension not loaded";
}
$mc = new Memcached();
$mc->connect("localhost", 11211);
print_r($mc->getStats());