/** * Append data to an existing item. * * This method should throw an error if it is used with compressed data. This * is an expected behavior. Memcached casts the value to be appended to the initial value to the * type of the initial value. Be careful as this leads to unexpected behavior at times. Due to * how memcached treats types, the behavior has been mimicked in the internal cache to produce * similar results and improve consistency. It is recommend that appends only occur with data of * the same type. * * @link http://www.php.net/manual/en/memcached.append.php * * @param string $key The key under which to store the value. * @param mixed $value Must be string as appending mixed values is not well-defined. * @param string $group The group value appended to the $key. * @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 append($key, $value, $group = 'default', $server_key = '', $byKey = false) { if (!is_string($value) && !is_int($value) && !is_float($value)) { return false; } $derived_key = $this->buildKey($key, $group); // If group is a non-Memcached group, append to runtime cache value, not Memcached if (in_array($group, $this->no_mc_groups)) { if (!isset($this->cache[$derived_key])) { return false; } $combined = $this->combine_values($this->cache[$derived_key], $value, 'app'); $this->add_to_internal_cache($derived_key, $combined); return true; } // Append to Memcached value if (false !== $byKey) { $result = $this->mc->appendByKey($server_key, $derived_key, $value); } else { $result = $this->mc->append($derived_key, $value); } // Store in runtime cache if add was successful if (Memcached::RES_SUCCESS === $this->getResultCode()) { $combined = $this->combine_values($this->cache[$derived_key], $value, 'app'); $this->add_to_internal_cache($derived_key, $combined); } return $result; }
/** * @inheritdoc */ public function appendByKey($server_key, $key, $value, $expiration = null) { $key = $this->prefix . $key; return parent::appendByKey($server_key, $key, $value, $expiration = null); }