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%' ] ]
Memcached
ソフトウェアは1つだけで、 https://memcached.org/ で入手できます。
PHP
にはMemcached
と呼ばれる2つのよく知られたmemcache
ライブラリがあります( http://php.net/manual/en/book.memcache.php )とmemcached
( http://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 を参照してください。 。
私は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();
}
これがお役に立てば幸いです。