web-dev-qa-db-ja.com

symfonyでMemcacheを使用する方法

Symfony 2を使用していて、Memcacheを使用したいのですが、問題は、memcachedで見つけたMemcacheの説明が見つからないことです。同じセットアップ手順ですか? symfonyにMemcacheをインストールするためにこの行を追加しましたか?

config.yml

framework:
  session:
    handler_id: session.handler.memcached

parameters.ymlの場合

parameters:   
  memcached_Host: 127.0.0.1
  memcached_port: 11211
  memcached_prefix: custom_key_
  memcached_expire: 14400

services.yml

services:
  session.handler.memcached:
    class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler
    arguments: [ "@session.memcached", { prefix: '%memcached_prefix%', expiretime: '%memcached_expire%' } ]


services:
  session.memcached:
    class: Memcached
    arguments:
      persistent_id: %memcached_prefix%
    calls:
      - [ addServer, [ %memcached_Host%, %memcached_port% ]]



services:
  session.memcached:
    class: Madisoft\AppBundle\Utils\MemcachedWrapper
    arguments:
      persistent_id: '%memcached_prefix%'
    calls:
      - [ addServer, [ '%memcached_Host%', '%memcached_port%' ] ]
7
mrsharko

Memcachedソフトウェアは1つだけで、 https://memcached.org/ で入手できます。

PHPにはMemcachedと呼ばれる2つのよく知られたmemcacheライブラリがあります( http://php.net/manual/en/book.memcache.php )とmemcachedhttp://php.net/manual/en/book.memcached.php )なので、おそらくこれが混乱の原因です。

Symfony2でMemcachedを使用するには、必要なすべてのドキュメントを提供するLeaseWebの外部バンドルを使用することをお勧めします: https://github.com/LeaseWeb/LswMemcacheBundle

Symfony 3.3以降、ネイティブのMemcachedアダプターがあります。 http://symfony.com/blog/new-in-symfony-3-3-memcached-cache-adapter を参照してください。 。

10
Francesco Abeni

私はusinfSymfony 3.4で、config.ymlは次のとおりです。

parameters:
    session_memcached_Host: localhost
    session_memcached_port: 11211
    session_memcached_prefix: sess
    session_memcached_expire: 100 # this is in seconds

framework:
    session:
        handler_id: session.handler.memcached

およびservices.yml:

services:
    session.memcached:
        class: Memcached
        arguments:
            # Just remember to comment out below line or even remove whole arguments section
            # persistent_id: %session_memcached_prefix%
        calls:
            - [ addServer, [ %session_memcached_Host%, %session_memcached_port% ]]

    session.handler.memcached:
        class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler
        arguments: ["@session.memcached", { prefix: %session_memcached_prefix%, expiretime: %session_memcached_expire% }]

上記の設定では、セッションをMemcachedサーバーに保存します(正確にはAWS ElasticCache Memcached)。

Memcachedで遊んでみたい場合は、カスタムデータを保存するために使用するものを次に示します。

use Symfony\Component\Cache\Adapter\MemcachedAdapter;

$client = MemcachedAdapter::createConnection('memcached://localhost');
$cache  = new MemcachedAdapter($client, $namespace = '', $defaultLifetime = 0);
$item   = $cache->getItem('itemName');

if (!$item->isHit()) {
    // Item does not exist
    $item
        ->set($data)
        ->expiresAfter(10) // in seconds
    ;
    $cache->save($item);
} else {
    // Item exists
    $cachedItem = $item->get();
}

これがお役に立てば幸いです。

0
Strabek