Get memcache object from rcmail instance

release-0.6
thomascube 13 years ago
parent 4e3ec4eca8
commit 76d4019a35

@ -63,6 +63,13 @@ class rcmail
*/
public $db;
/**
* Instace of Memcache class.
*
* @var rcube_mdb2
*/
public $memcache;
/**
* Instace of rcube_session class.
*
@ -310,6 +317,38 @@ class rcmail
return $this->db;
}
/**
* Get global handle for memcache access
*
* @return object Memcache
*/
public function get_memcache()
{
if (!isset($this->memcache)) {
// no memcache support in PHP
if (!class_exists('Memcache')) {
$this->memcache = false;
return false;
}
$this->memcache = new Memcache;
$mc_available = 0;
foreach ($this->config->get('memcache_hosts', array()) as $host) {
list($host, $port) = explode(':', $host);
if (!$port) $port = 11211;
// add server and attempt to connect if not already done yet
if ($this->memcache->addServer($host, $port) && !$mc_available)
$mc_available += intval($this->memcache->connect($host, $port));
}
if (!$mc_available)
$this->memcache = false;
}
return $this->memcache;
}
/**

@ -59,18 +59,10 @@ class rcube_session
// use memcache backend
if ($config->get('session_storage', 'db') == 'memcache') {
$this->memcache = new Memcache;
$mc_available = 0;
foreach ($config->get('memcache_hosts', array()) as $host) {
list($host, $port) = explode(':', $host);
if (!$port) $port = 11211;
// add server and attempt to connect if not already done yet
if ($this->memcache->addServer($host, $port) && !$mc_available)
$mc_available += intval($this->memcache->connect($host, $port));
}
$this->memcache = rcmail::get_instance()->get_memcache();
// set custom functions for PHP session management if memcache is available
if ($mc_available) {
if ($this->memcache) {
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),

Loading…
Cancel
Save