Today techportal published a new article of mine on their site - New Memcached Extension for PHP. Its a sequel to the article I wrote for them earlier in the year entitled Getting Started with Memcache. At the same time I wrote that first article, Andrei Zmievski released a new extension for PHP to make use of the functionality in the libmemcached library - so I wrote the new article to give some information about it.
I've been working with memcache-related things lately and ran into a problem where the library I was using just didn't seem to do what its documentation said it would. It turned out that it was making a "gets" call rather than a "get" call - and this functionality wasn't introduced to memcached until version 1.2.4. Closer inspection shows that although Ubuntu Jaunty Jackalope (9.04) is only a few months old, and memcached 1.2.4 is about 18 months old, its not included and Ubuntu versions Hardy, Intrepid and Jaunty all had 1.2.2 version of memcached.
Credit to the Ubuntu people for resolving this issue already - since memcached 1.2.8 is currently pencilled in for Karmic Koala release of Ubuntu later this year - but I can't wait that long so I updated my own memcached, it was pretty easy so here are the steps in case anyone else wants to do the same.
- download memcached from http://www.danga.com/memcached/download.bml
- check you have the dependencies you need. The only thing I didn't have was the libraries for libevent, which you can install through aptitude with aptitude install libevent-dev
- compile as you usually would: configure/make/make install
The final step is to get memcached running - I actually did aptitude remove memcached to get rid of my old version and stop myself from being confused later. Then to start it from command line I used:
/usr/local/bin/memcached -m 64 -p 11211 -u nobody -l 0.0.0.0
The above worked for me and allowed me to use the functionality available in the newer library (specifically I was looking to use the cas (compare and swap) functionality in the new PHP memcached extension) - it probably works on other distros too but I didn't test it, if it works for you or if you have anything to add then please leave a comment!