当前位置: 首页>>代码示例>>PHP>>正文


PHP Memcached::add方法代码示例

本文整理汇总了PHP中Memcached::add方法的典型用法代码示例。如果您正苦于以下问题:PHP Memcached::add方法的具体用法?PHP Memcached::add怎么用?PHP Memcached::add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Memcached的用法示例。


在下文中一共展示了Memcached::add方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: add

 /**
  * 新增key
  * @param $key
  * @param $val
  * @param $expireTime
  * @return bool
  */
 public function add($key, $val, $expireTime)
 {
     $ret = $this->dbh->add($key, $val, $expireTime);
     if ($ret === false) {
         $this->error('add', $key);
     }
     return true;
 }
开发者ID:songsihan,项目名称:simple,代码行数:15,代码来源:NoSQL.php

示例2: add

 function add($key, $value, $ttl = 0)
 {
     $key = str_replace('\\', '/', $key);
     if (!$this->memcached->add($key, $value, $ttl)) {
         $message = sprintf('Memcache::set() with key "%s" failed', $key);
         \ManiaLib\Utils\Logger::error($message);
     }
 }
开发者ID:kremsy,项目名称:manialib,代码行数:8,代码来源:Memcached.php

示例3: add

 public function add($id, $value, $ttl = null)
 {
     $ttl = $ttl ?: 0;
     if ($ttl > 0) {
         $ttl = time() + $ttl;
     }
     return $this->memcached->add($id, $value, $ttl);
 }
开发者ID:maximebf,项目名称:cachecache,代码行数:8,代码来源:Memcached.php

示例4: exists

 public function exists($id)
 {
     $success = $this->memcached->add($id, 0);
     if (!$success) {
         return true;
     }
     $this->memcached->delete($id);
     return false;
 }
开发者ID:emaphp,项目名称:simplecache,代码行数:9,代码来源:MemcachedProvider.php

示例5: lock

 /**
  * Lock the mutex
  *
  * @param string $mutexKey Identifier of the mutex.
  * @param int    $expiry   How long in seconds to keep the mutex locked just in
  *                         case the script dies. 0 = never expires.
  *
  * @throws LockFailedException
  */
 public function lock($mutexKey, $expiry)
 {
     // Try and set the value. If it fails check to see if
     // it already contains our ID
     if (!$this->_memcache->add($mutexKey, $this->_getLockId(), $expiry)) {
         if (!$this->isLocked($mutexKey)) {
             throw new LockFailedException();
         }
     }
 }
开发者ID:packaged,项目名称:mutex,代码行数:19,代码来源:MemcachedMutexProvider.php

示例6: acquire

 /**
  * 上锁
  *
  * @param string $key
  * @return boolean
  */
 public function acquire($key)
 {
     $key = $this->prefix . $key;
     $time = time();
     while (time() - $time < $this->max_timeout) {
         if ($this->memcached->add($key, $this->Identifier, $this->timeout)) {
             return true;
         }
         usleep($this->retry_wait_usec);
     }
     return false;
 }
开发者ID:latrell,项目名称:lock,代码行数:18,代码来源:MemcachedStore.php

示例7: internalDecrementItem

    /**
     * Internal method to decrement an item.
     *
     * Options:
     *  - ttl <float>
     *    - The time-to-life
     *  - namespace <string>
     *    - The namespace to use
     *
     * @param  string $normalizedKey
     * @param  int    $value
     * @param  array  $normalizedOptions
     * @return int|boolean The new value on success, false on failure
     * @throws Exception\ExceptionInterface
     */
    protected function internalDecrementItem(& $normalizedKey, & $value, array & $normalizedOptions)
    {
        $this->memcached->setOption(MemcachedResource::OPT_PREFIX_KEY, $normalizedOptions['namespace']);

        $value    = (int)$value;
        $newValue = $this->memcached->decrement($normalizedKey, $value);

        if ($newValue === false) {
            $rsCode = $this->memcached->getResultCode();

            // initial value
            if ($rsCode == MemcachedResource::RES_NOTFOUND) {
                $newValue   = -$value;
                $expiration = $this->expirationTime($normalizedOptions['ttl']);
                $this->memcached->add($normalizedKey, $newValue, $expiration);
                $rsCode = $this->memcached->getResultCode();
            }

            if ($rsCode) {
                throw $this->getExceptionByResultCode($rsCode);
            }
        }

        return $newValue;
    }
开发者ID:necrogami,项目名称:zf2,代码行数:40,代码来源:Memcached.php

示例8: doIncrement

 /**
  * {@inheritdoc}
  */
 public function doIncrement($key, $increment = 1, $initialValue = 0, $expiration = null, array $options = array())
 {
     $key = $this->getKey($key, $options);
     /* Only the binary protocol supports initial value, in which case the implementation is simpler. */
     if ($this->isBinaryProtocolActive()) {
         $result = $this->client->increment($key, $increment, $initialValue, $expiration);
         return new CacheResponse($result, $this->isSuccess(), $this->isSuccess() || $this->isNotFound());
     }
     /* If the binary protocol is disable we must implement the initial value logic. */
     $result = $this->client->increment($key, $increment);
     /* In case or success or any error aside "not found" there's nothing more to do. */
     if ($this->isSuccess() || !$this->isNotFound()) {
         return new CacheResponse($result, true, true);
     }
     /**
      * Try to add the key; notice that "add" is used instead of "set", to ensure we do not override
      * the value in case another process already set it.
      */
     $result = $this->client->add($key, $increment + $initialValue, $expiration);
     /* Created the key successfully. */
     if ($this->isSuccess()) {
         return new CacheResponse($increment + $initialValue, true, true);
     }
     /* The key was not stored because is already existed, try to increment a last time. */
     if ($this->isNotStored()) {
         $result = $this->client->increment($key, $increment);
         return new CacheResponse($result, $this->isSuccess(), $this->isSuccess() || $this->isNotFound());
     }
     return new CacheResponse($result, false, false);
 }
开发者ID:ebidtech,项目名称:cache-client,代码行数:33,代码来源:MemcachedProviderService.php

示例9: mSetNX

 /**
  * 批量设置键值(当键名不存在时);<br>
  * 只有当键值全部设置成功时,才返回true,否则返回false并尝试回滚
  * @param array $sets   键值数组
  * @return boolean      是否成功
  */
 public function mSetNX($sets)
 {
     try {
         $keys = [];
         $status = true;
         foreach ($sets as $key => $value) {
             $status = $this->handler->add($key, self::setValue($value));
             if ($status) {
                 $keys[] = $key;
             } else {
                 break;
             }
         }
         //如果失败,尝试回滚,但不保证成功
         if (!$status) {
             foreach ($keys as $key) {
                 $this->handler->delete($key);
             }
         }
         return $status;
     } catch (Exception $ex) {
         self::exception($ex);
         //连接状态置为false
         $this->isConnected = false;
     }
     return false;
 }
开发者ID:iliubang,项目名称:LinkCache,代码行数:33,代码来源:Memcached.php

示例10: lockindex

	/**
	 * Lock cache index
	 *
	 * @return  boolean  True on success, false otherwise.
	 *
	 * @since   12.1
	 */
	protected function lockindex()
	{
		$looptime = 300;
		$data_lock = self::$_db->add($this->_hash . '-index_lock', 1, 30);

		if ($data_lock === false)
		{

			$lock_counter = 0;

			// Loop until you find that the lock has been released.  that implies that data get from other thread has finished
			while ($data_lock === false)
			{
				if ($lock_counter > $looptime)
				{
					return false;
					break;
				}

				usleep(100);
				$data_lock = self::$_db->add($this->_hash . '-index_lock', 1, 30);
				$lock_counter++;
			}
		}

		return true;
	}
开发者ID:realityking,项目名称:joomla-platform,代码行数:34,代码来源:memcached.php

示例11: addItem

 /**
  * Add an item.
  *
  * Options:
  *  - namespace <string> optional
  *    - The namespace to use (Default: namespace of object)
  *  - tags <array> optional
  *    - An array of tags
  *
  * @param  string $key
  * @param  mixed  $value
  * @param  array  $options
  * @return boolean
  * @throws Exception
  *
  * @triggers addItem.pre(PreEvent)
  * @triggers addItem.post(PostEvent)
  * @triggers addItem.exception(ExceptionEvent)
  */
 public function addItem($key, $value, array $options = array())
 {
     $baseOptions = $this->getOptions();
     if (!$baseOptions->getWritable()) {
         return false;
     }
     $this->normalizeOptions($options);
     $this->normalizeKey($key);
     $args = new ArrayObject(array('key' => &$key, 'value' => &$value, 'options' => &$options));
     try {
         $eventRs = $this->triggerPre(__FUNCTION__, $args);
         if ($eventRs->stopped()) {
             return $eventRs->last();
         }
         $internalKey = $options['namespace'] . $baseOptions->getNamespaceSeparator() . $key;
         if (!$this->memcached->add($internalKey, $value, $options['ttl'])) {
             if ($this->memcached->get($internalKey) !== false) {
                 throw new Exception\RuntimeException("Key '{$internalKey}' already exists");
             }
             $type = is_object($value) ? get_class($value) : gettype($value);
             throw new Exception\RuntimeException("Memcached::add('{$internalKey}', <{$type}>, {$options['ttl']}) failed");
         }
         $result = true;
         return $this->triggerPost(__FUNCTION__, $args, $result);
     } catch (\Exception $e) {
         return $this->triggerException(__FUNCTION__, $args, $e);
     }
 }
开发者ID:nevvermind,项目名称:zf2,代码行数:47,代码来源:Memcached.php

示例12: decrementItem

 /**
  * Decrement an item.
  *
  * Options:
  *  - namespace <string> optional
  *    - The namespace to use (Default: namespace of object)
  *  - ignore_missing_items <boolean> optional
  *    - Throw exception on missing item or return false
  *
  * @param  string $key
  * @param  int $value
  * @param  array $options
  * @return int|boolean The new value or false or failure
  * @throws Exception
  *
  * @triggers decrementItem.pre(PreEvent)
  * @triggers decrementItem.post(PostEvent)
  * @triggers decrementItem.exception(ExceptionEvent)
  */
 public function decrementItem($key, $value, array $options = array())
 {
     $baseOptions = $this->getOptions();
     if (!$baseOptions->getWritable()) {
         return false;
     }
     $this->normalizeOptions($options);
     $this->normalizeKey($key);
     $args = new ArrayObject(array('key' => &$key, 'value' => &$value, 'options' => &$options));
     try {
         $eventRs = $this->triggerPre(__FUNCTION__, $args);
         if ($eventRs->stopped()) {
             return $eventRs->last();
         }
         $this->memcached->setOption(MemcachedResource::OPT_PREFIX_KEY, $options['namespace']);
         $value = (int) $value;
         $newValue = $this->memcached->decrement($key, $value);
         if ($newValue === false) {
             if (($rsCode = $this->memcached->getResultCode()) != 0 && ($rsCode != MemcachedResource::RES_NOTFOUND || !$options['ignore_missing_items'])) {
                 throw $this->getExceptionByResultCode($rsCode);
             }
             $expiration = $this->expirationTime($options['ttl']);
             if (!$this->memcached->add($key, -$value, $expiration)) {
                 throw $this->getExceptionByResultCode($this->memcached->getResultCode());
             }
             $newValue = -$value;
         }
         return $this->triggerPost(__FUNCTION__, $args, $newValue);
     } catch (\Exception $e) {
         return $this->triggerException(__FUNCTION__, $args, $e);
     }
 }
开发者ID:ranxin1022,项目名称:zf2,代码行数:51,代码来源:Memcached.php

示例13: add

 /**
  * 添加数据
  * @param string|array $key
  * @param mixed $value
  * @param int $expiration
  * @return array|bool
  */
 public function add($key = NULL, $value = NULL, $expiration = 0)
 {
     if (is_null($expiration)) {
         $expiration = C(Config::MEMCACHE_EXPIRATION);
     }
     $expiration = intval($expiration);
     if (is_array($key)) {
         foreach ($key as $multi) {
             if (!isset($multi['expiration']) || $multi['expiration'] == '') {
                 $multi['expiration'] = $expiration;
             }
             $this->add($this->key_name($multi['key']), $multi['value'], $multi['expiration']);
         }
         $add_status = true;
     } else {
         $keyName = $this->key_name($key);
         $this->local_cache[$keyName] = $value;
         switch ($this->client_type) {
             case 'Memcache':
                 $add_status = $this->m->add($keyName, $value, C(Config::MEMCACHE_COMPRESSION), $expiration);
                 break;
             default:
             case 'Memcached':
                 $add_status = $this->m->add($keyName, $value, $expiration);
                 break;
         }
     }
     return $add_status;
 }
开发者ID:babety,项目名称:HellaEngine,代码行数:36,代码来源:Memcached.php

示例14: add

 /**
  * Adds a value to cache.
  *
  * If the specified key already exists, the value is not stored and the function
  * returns false.
  *
  * @link    http://www.php.net/manual/en/memcached.add.php
  *
  * @param   string      $key            The key under which to store the value.
  * @param   mixed       $value          The value to store.
  * @param   string      $group          The group value appended to the $key.
  * @param   int         $expiration     The expiration time, defaults to 0.
  * @param   string      $server_key     The key identifying the server to store the value on.
  * @param   bool        $byKey          True to store in internal cache by key; false to not store by key
  * @return  bool                        Returns TRUE on success or FALSE on failure.
  */
 public function add($key, $value, $group = 'default', $expiration = 0, $server_key = '', $byKey = false)
 {
     /**
      * Ensuring that wp_suspend_cache_addition is defined before calling, because sometimes an advanced-cache.php
      * file will load object-cache.php before wp-includes/functions.php is loaded. In those cases, if wp_cache_add
      * is called in advanced-cache.php before any more of WordPress is loaded, we get a fatal error because
      * wp_suspend_cache_addition will not be defined until wp-includes/functions.php is loaded.
      */
     if (function_exists('wp_suspend_cache_addition') && wp_suspend_cache_addition()) {
         return false;
     }
     $derived_key = $this->buildKey($key, $group);
     $expiration = $this->sanitize_expiration($expiration);
     // If group is a non-Memcached group, save to runtime cache, not Memcached
     if (in_array($group, $this->no_mc_groups)) {
         // Add does not set the value if the key exists; mimic that here
         if (isset($this->cache[$derived_key])) {
             return false;
         }
         $this->add_to_internal_cache($derived_key, $value);
         return true;
     }
     // Save to Memcached
     if (false !== $byKey) {
         $result = $this->mc->addByKey($server_key, $derived_key, $value, $expiration);
     } else {
         $result = $this->mc->add($derived_key, $value, $expiration);
     }
     // Store in runtime cache if add was successful
     if (Memcached::RES_SUCCESS === $this->getResultCode()) {
         $this->add_to_internal_cache($derived_key, $value);
     }
     return $result;
 }
开发者ID:Ramoonus,项目名称:wp-spider-cache,代码行数:50,代码来源:class-object-cache.php

示例15: add

 /**
  * Set a value in the cache if it's not already stored
  *
  * @param string $key
  * @param mixed $value
  * @param int $ttl Time To Live in seconds. Defaults to 60*60*24
  * @return bool
  * @throws \Exception
  */
 public function add($key, $value, $ttl = 0)
 {
     $result = self::$cache->add($this->getPrefix() . $key, $value, $ttl);
     if (self::$cache->getResultCode() !== \Memcached::RES_NOTSTORED) {
         $this->verifyReturnCode();
     }
     return $result;
 }
开发者ID:stweil,项目名称:owncloud-core,代码行数:17,代码来源:Memcached.php


注:本文中的Memcached::add方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。