Beispiel #1
0
 /**
  * Performs the test.
  *
  * @return \Jyxo\Beholder\Result
  */
 public function run() : \Jyxo\Beholder\Result
 {
     // The memcached or memcache extension is required
     if (!extension_loaded('memcached') && !extension_loaded('memcache')) {
         return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::NOT_APPLICABLE, 'Extension memcached or memcache required');
     }
     $random = md5(uniqid((string) time(), true));
     $key = 'beholder-' . $random;
     $value = $random;
     // Status label
     $description = (false !== filter_var($this->host, FILTER_VALIDATE_IP) ? gethostbyaddr($this->host) : $this->host) . ':' . $this->port;
     if (extension_loaded('memcached')) {
         // Connection
         $memcached = new \Memcached();
         if (false === $memcached->addServer($this->host, $this->port)) {
             return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, sprintf('Connection error %s', $description));
         }
     } else {
         // Connection (@ due to notice)
         $memcached = new \Memcache();
         if (false === @$memcached->connect($this->host, $this->port)) {
             return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, sprintf('Connection error %s', $description));
         }
     }
     // Saving
     if (false === $memcached->set($key, $value)) {
         if ($memcached instanceof \Memcached) {
             $memcached->quit();
         } else {
             $memcached->close();
         }
         return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, sprintf('Write error %s', $description));
     }
     // Check
     $check = $memcached->get($key);
     if (false === $check || $check !== $value) {
         if ($memcached instanceof \Memcached) {
             $memcached->quit();
         } else {
             $memcached->close();
         }
         return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, sprintf('Read error %s', $description));
     }
     // Deleting
     if (false === $memcached->delete($key)) {
         if ($memcached instanceof \Memcached) {
             $memcached->quit();
         } else {
             $memcached->close();
         }
         return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::FAILURE, sprintf('Delete error %s', $description));
     }
     // Disconnect
     if ($memcached instanceof \Memcached) {
         $memcached->quit();
     } else {
         $memcached->close();
     }
     // OK
     return new \Jyxo\Beholder\Result(\Jyxo\Beholder\Result::SUCCESS, $description);
 }
Beispiel #2
0
 public function __destruct()
 {
     return $this->_memcached->quit();
 }