Created
April 7, 2016 08:28
-
-
Save cedricziel/cc599be67f816540c608b7658ccd3cf6 to your computer and use it in GitHub Desktop.
AppEngine flexible environment memcached handling for sessions and doctrine cache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ..... | |
framework: | |
validation: | |
cache: validator.mapping.cache.doctrine.apc | |
serializer: | |
cache: serializer.mapping.cache.doctrine.apc | |
session: | |
handler_id: session.handler.memcached | |
# Doctrine Configuration | |
doctrine: | |
dbal: | |
driver: pdo_mysql | |
charset: UTF8 | |
orm: | |
metadata_cache_driver: | |
type: service | |
id: doctrine.cache.memcached | |
result_cache_driver: | |
type: service | |
id: doctrine.cache.memcached | |
query_cache_driver: | |
type: service | |
id: doctrine.cache.memcached | |
monolog: | |
handlers: | |
main: | |
type: service | |
id: vendor_infra.logging.handler.appengine |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Vendor\InfraBundle\Cache; | |
use Memcached; | |
use Symfony\Component\DependencyInjection\ContainerAwareInterface; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
/** | |
* @package Vendor\InfraBundle\Cache | |
*/ | |
class MemcachedFactory implements ContainerAwareInterface | |
{ | |
/** | |
* @var ContainerInterface | |
*/ | |
protected $container; | |
/** | |
* @return Memcached | |
*/ | |
public function getInstance() | |
{ | |
$host = getenv('MEMCACHE_PORT_11211_TCP_ADDR'); | |
$port = getenv('MEMCACHE_PORT_11211_TCP_PORT'); | |
$cache = new Memcached($this->container->getParameter('session_memcached_prefix')); | |
$cache->addServer($host, $port); | |
return $cache; | |
} | |
/** | |
* @param ContainerInterface|null $container A ContainerInterface instance or null | |
*/ | |
public function setContainer(ContainerInterface $container = null) | |
{ | |
$this->container = $container; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
parameters: | |
doctrine.cache.memcached.prefix: dqc | |
services: | |
## | |
# Memcached factory | |
## | |
vendor_infra.cache.memcached_factory: | |
class: Vendor\InfraBundle\Cache\MemcachedFactory | |
calls: | |
- [ setContainer, [ '@service_container' ]] | |
## | |
# Memcached Session | |
## | |
session.memcached: | |
class: Memcached | |
factory: ['@vendor_infra.cache.memcached_factory', getInstance] | |
arguments: | |
persistent_id: '%session_memcached_prefix%' | |
## | |
# Memcached Session Handler | |
## | |
session.handler.memcached: | |
class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler | |
arguments: ['@session.memcached', { prefix: '%session_memcached_prefix%', expiretime: '%session_memcached_expire%' }] | |
## | |
# Memcached Doctrine cache instance | |
## | |
doctrine.cache.query.memcached: | |
class: Memcached | |
factory: ['@vendor_infra.cache.memcached_factory', getInstance] | |
arguments: | |
persistent_id: '%doctrine.cache.memcached.prefix%' | |
## | |
# Memcached Doctrine cache | |
## | |
doctrine.cache.memcached: | |
class: Doctrine\Common\Cache\MemcachedCache | |
calls: | |
- [ setMemcached, [ '@doctrine.cache.query.memcached' ] ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment