MemcacheBundle icon indicating copy to clipboard operation
MemcacheBundle copied to clipboard

A Memcached service for Symfony

DEPRECATED

This project is no longer beeing developed.

MemcacheBundle


This is a simple bundle that creates a memcached service that you can use. 

Note: The service supports creating both PHP Memcache extensions (i.e. both http://php.net/memcache and http://php.net/memcached), BUT it does not protect you
from differences in the two services interfaces as it returns the raw object.

Instalation
-----------

Add to deps::

    [SMMemcacheBundle]
        git=git://github.com/tarjei/MemcacheBundle.git
        target=/bundles/SM/MemcacheBundle


Then register the bundle with your kernel::

    
    // app/AppKernel.php
    // in AppKernel::registerBundles()
    $bundles = array(
        // ...
        new SM\MemcacheBundle\SMMemcacheBundle(),
        // ...
    );

Make sure that you also register the namespaces with the autoloader::

    // app/autoload.php
    $loader->registerNamespaces(array(
        // ...
        'SM\\MemcacheBundle' => __DIR__ . '/../vendor/bundles',
    ));

Configuration
-------------

In your prod/dev environment::

    # app/config/config.yml
    sm_memcache:
        use_mock: false
        port: 11211
        host: localhost

In your test environment::

    # app/config/config.yml
    sm_memcache:
        use_mock: true

Usage
-----

The service is named sm_memcache, it returns a normal \Memcache or \Memcached php object::

    $memcached = $container->get("sm_memcache");
    $memcached->set("someKey", "somevalue");


The service is just the normal Memcache object (http://php.net/memcache) so you can use the normal methods.

For tests there is a special MockMemcache object that you can use to stub out the memcache service.

Options
-----
If you use Memcached class, you can pass options to instance in config. Example::

    sm_memcache:
        port: 11211
        host: localhost
        class: Memcached
        options:
            igbinary:
                name: serializer
                value: serializer_igbinary

This example sets `Memcached::OPT_SERIALIZER` to `Memcached::SERIALIZER_IGBINARY`
Before applying options are converted in following format:

* option name is converted to Memcached::OPT_*UPPERCASE_NAME* constant
* option value is converted to Memcached::\*UPPERCASE_NAME\*

If you use Memcache class, options block is ignored.

TODO
----
 * Support multiple memcache servers.
 * Support more methods in the mock module.