You are here

MemcacheConnection.php in Memcache API and Integration 8.2

File

src/Connection/MemcacheConnection.php
View source
<?php

namespace Drupal\memcache\Connection;


/**
 * Class MemcacheConnection.
 */
class MemcacheConnection implements MemcacheConnectionInterface {

  /**
   * The memcache object.
   *
   * @var \Memcache
   */
  protected $memcache;

  /**
   * Constructs a MemcacheConnection object.
   */
  public function __construct() {
    $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);
  }

  /**
   * {@inheritdoc}
   */
  public function getMemcache() {
    return $this->memcache;
  }

  /**
   * {@inheritdoc}
   */
  public function close() {
    $this->memcache
      ->close();
  }

  /**
   * Connects to a memcache server.
   *
   * @param string $host
   *   The server path without port.
   * @param int $port
   *   The server port.
   * @param bool $persistent
   *   Whether this server connection is persistent or not.
   *
   * @return \Memcache|bool
   *   A Memcache object for a successful persistent connection. TRUE for a
   *   successful non-persistent connection. FALSE when the server fails to
   *   connect.
   */
  protected function connect($host, $port, $persistent) {
    if ($persistent) {
      return @$this->memcache
        ->pconnect($host, $port);
    }
    else {
      return @$this->memcache
        ->connect($host, $port);
    }
  }

}

Classes

Namesort descending Description
MemcacheConnection Class MemcacheConnection.