It's Feb 2012, and I just spent half a day tracing a weird and sporadic problem back to Memcached extension (vers 1.0.2), which would randomly return SYSTEM ERROR and fail to either get or put data into unix memcached. Made one single change from Memcached extension back to Memcache extension and problem instantly vanished.
A year or three ago, I had changed from Memcache to Memcached for some other reason.
Now I'm on a mission to transcend the Memcache/Memcached fiasco. I'm going to try APC's variable cache, and if that doesn't work better than just revert to using a key:value stash collection in Mongo.
Basically, the Memcache / Memcache driver fiasco, which has been going on apparently for years now, has ruined serious use of unix memcached on PHP...unless you're huge and can afford to create your own MemcacheX driver...
Memcached
- Introduction
- Installing/Configuring
- Predefined Constants
- Expiration Times
- Callbacks
- Sessions support
- Memcached — The Memcached class
- Memcached::add — Add an item under a new key
- Memcached::addByKey — Add an item under a new key on a specific server
- Memcached::addServer — Add a server to the server pool
- Memcached::addServers — Add multiple servers to the server pool
- Memcached::append — Append data to an existing item
- Memcached::appendByKey — Append data to an existing item on a specific server
- Memcached::cas — Compare and swap an item
- Memcached::casByKey — Compare and swap an item on a specific server
- Memcached::__construct — Create a Memcached instance
- Memcached::decrement — Decrement numeric item's value
- Memcached::decrementByKey — Decrement numeric item's value, stored on a specific server
- Memcached::delete — Delete an item
- Memcached::deleteByKey — Delete an item from a specific server
- Memcached::deleteMulti — Delete multiple items
- Memcached::deleteMultiByKey — Delete multiple items from a specific server
- Memcached::fetch — Fetch the next result
- Memcached::fetchAll — Fetch all the remaining results
- Memcached::flush — Invalidate all items in the cache
- Memcached::get — Retrieve an item
- Memcached::getAllKeys — Gets the keys stored on all the servers
- Memcached::getByKey — Retrieve an item from a specific server
- Memcached::getDelayed — Request multiple items
- Memcached::getDelayedByKey — Request multiple items from a specific server
- Memcached::getMulti — Retrieve multiple items
- Memcached::getMultiByKey — Retrieve multiple items from a specific server
- Memcached::getOption — Retrieve a Memcached option value
- Memcached::getResultCode — Return the result code of the last operation
- Memcached::getResultMessage — Return the message describing the result of the last operation
- Memcached::getServerByKey — Map a key to a server
- Memcached::getServerList — Get the list of the servers in the pool
- Memcached::getStats — Get server pool statistics
- Memcached::getVersion — Get server pool version info
- Memcached::increment — Increment numeric item's value
- Memcached::incrementByKey — Increment numeric item's value, stored on a specific server
- Memcached::isPersistent — Check if a persitent connection to memcache is being used
- Memcached::isPristine — Check if the instance was recently created
- Memcached::prepend — Prepend data to an existing item
- Memcached::prependByKey — Prepend data to an existing item on a specific server
- Memcached::quit — Close any open connections
- Memcached::replace — Replace the item under an existing key
- Memcached::replaceByKey — Replace the item under an existing key on a specific server
- Memcached::resetServerList — Clears all servers from the server list
- Memcached::set — Store an item
- Memcached::setByKey — Store an item on a specific server
- Memcached::setMulti — Store multiple items
- Memcached::setMultiByKey — Store multiple items on a specific server
- Memcached::setOption — Set a Memcached option
- Memcached::setOptions — Set Memcached options
- Memcached::setSaslAuthData — Set the credentials to use for authentication
- Memcached::touch — Set a new expiration on an item
- Memcached::touchByKey — Set a new expiration on an item on a specific server
mike at eastghost dot com ¶
1 year ago
joelhy ¶
1 year ago
For those confuse about the memcached extension and the memcache extension, the short story is that both of them are clients of memcached server, and the memcached extension offer more features than the memcache extension.
davidt ¶
3 months ago
The module also supports SASL authentication, it just isn't documented sadly. You'll need to run the following code:
<?php
$m = new Memcached();
$m->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$m->setSaslAuthData("user-1", "pass");
?>
You need to enable the "memcached.use_sasl = 1" ini option for memcached in the php.ini file.
