Tuesday, June 25, 2013

Using Memcached with Symfony 2 (on CentOS 6)

The biggest problem, that I've been running into for years, is always performance. But sometimes optimizing your code isn't good enough, sometimes because you're depending on external libraries, which you don't want to change.

For one of our customers, I ran into this problem as well, so I had to find a solution. I've already heared about Memcached often, but I never had the time to look into it and I was kinda scared to have to implement it in an already existing application. Afterwards, I found using the basics of memcached was pretty simple, and it boosted my page speed by 50-75%(!), only by caching doctrine queries and results.

A quick Google search found me a bundle that claims to do exactly what I want: the LswMemcacheBundle. LswMemcacheBundle is developed by LeaseWeb, which leverages the power of the PHP 'memcached' extension (not the older 'memcache' PHP extension, the d make a huge difference as explained on http://code.google.com/p/memcached/wiki/PHPClientComparison).

The installation instructions looked quite simple: install memcached, install the memcached extension and add one line to your composer.json. For Debian based systems this is the case, but CentOS 6 has some obstacles in place.

With CentOS 6 there are a couple problems:
  1. The php extension 'memcached' requires libmemcached. Unfortunatly the version of libmemcached in yum is to old to meet the requirements
  2. The php memcached extension can't be installed trough yum, so this has to be installed trough pecl
  3. Installing the php memcached extension trough pecl threw some errors while compiling.