You are here

class DrupalMemcache in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 modules/memcache/src/DrupalMemcache.php \Drupal\memcache\DrupalMemcache

Class DrupalMemcache.

Hierarchy

Expanded class hierarchy of DrupalMemcache

File

modules/memcache/src/DrupalMemcache.php, line 16
Contains \Drupal\memcache\DrupalMemcache.

Namespace

Drupal\memcache
View source
class DrupalMemcache extends DrupalMemcacheBase {

  /**
   * {@inheritdoc}
   */
  public function __construct($bin, Settings $settings) {
    parent::__construct($bin, $settings);
    $this->memcache = new \Memcache();
  }

  /**
   * @{@inheritdoc}
   */
  public function addServer($server_path, $persistent = FALSE) {
    list($host, $port) = explode(':', $server_path);

    // Support unix sockets in the format 'unix:///path/to/socket'.
    if ($host == 'unix') {

      // When using unix sockets with Memcache use the full path for $host.
      $host = $server_path;

      // Port is always 0 for unix sockets.
      $port = 0;
    }

    // When using the PECL memcache extension, we must use ->(p)connect
    // for the first connection.
    return $this
      ->connect($host, $port, $persistent);
  }

  /**
   * Connects to a memcache server.
   *
   * @param string $host
   * @param int $port
   * @param bool $persistent
   *
   * @return bool|mixed
   */
  protected function connect($host, $port, $persistent) {
    if ($persistent) {
      return @$this->memcache
        ->pconnect($host, $port);
    }
    else {
      return @$this->memcache
        ->connect($host, $port);
    }
  }

  /**
   * {@inheritdoc}
   */
  public function set($key, $value, $exp = 0, $flag = FALSE) {
    $full_key = $this
      ->key($key);
    return $this->memcache
      ->set($full_key, $value, $flag, $exp);
  }

  /**
   * {@inheritdoc}
   */
  public function getMulti(array $keys) {
    $full_keys = array();
    foreach ($keys as $cid) {
      $full_key = $this
        ->key($cid);
      $full_keys[$cid] = $full_key;
    }
    $track_errors = ini_set('track_errors', 1);
    $php_errormsg = '';
    $results = @$this->memcache
      ->get($full_keys);
    if (!empty($php_errormsg)) {
      register_shutdown_function('memcache_log_warning', LogLevel::WARNING, 'Exception caught in DrupalMemcache::getMulti: !msg', array(
        '!msg' => $php_errormsg,
      ));
      $php_errormsg = '';
    }
    ini_set('track_errors', $track_errors);

    // If $results is FALSE, convert it to an empty array.
    if (!$results) {
      $results = array();
    }

    // Convert the full keys back to the cid.
    $cid_results = array();
    $cid_lookup = array_flip($full_keys);
    foreach ($results as $key => $value) {
      $cid_results[$cid_lookup[$key]] = $value;
    }
    return $cid_results;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DrupalMemcache::addServer public function @ Overrides DrupalMemcacheInterface::addServer
DrupalMemcache::connect protected function Connects to a memcache server.
DrupalMemcache::getMulti public function Retrieves multiple values from Memcache. Overrides DrupalMemcacheInterface::getMulti
DrupalMemcache::set public function Adds an item into memcache. Overrides DrupalMemcacheInterface::set
DrupalMemcache::__construct public function Constructs a DrupalMemcacheBase object. Overrides DrupalMemcacheBase::__construct
DrupalMemcacheBase::$bin protected property The cache bin name.
DrupalMemcacheBase::$hashAlgorithm protected property The hash algorithm to pass to hash(). Defaults to 'sha1'
DrupalMemcacheBase::$memcache protected property The memcache object.
DrupalMemcacheBase::$settings protected property The settings object.
DrupalMemcacheBase::delete public function Deletes an item from Memcache. Overrides DrupalMemcacheInterface::delete
DrupalMemcacheBase::flush public function Immediately invalidates all existing items. Overrides DrupalMemcacheInterface::flush
DrupalMemcacheBase::get public function Retrieves a value from Memcache. Overrides DrupalMemcacheInterface::get
DrupalMemcacheBase::key public function Prepares the memcache key. Overrides DrupalMemcacheInterface::key