Symfony — MemcachedAdapter :: __ construct () должен быть экземпляром Memcached, строка дана

Это довольно странно. Я настроил кеширование с Memcached следующим образом:

framework.yaml

framework:
cache:
app: app.memcached_adapter

services.yaml

app.memcached_client:
class: Memcached
factory: 'Symfony\Component\Cache\Adapter\MemcachedAdapter::createConnection'
arguments: [['%app.memcached.dsn.1%', '%app.memcached.dsn.2%']]
public: true

app.memcached_adapter:
class: Symfony\Component\Cache\Adapter\MemcachedAdapter
arguments:
- '@app.memcached_client'
public: true

Я могу очистить кэш в терминале без каких-либо ошибок, но когда я загружаю свой сайт, я получаю следующее:

Type error: Argument 1 passed to Symfony\Component\Cache\Adapter\MemcachedAdapter::__construct()
must be an instance of Memcached, string given, called in
/users/me/project/please-dont-mention-the-company/sports/var/cache/lcl/ContainerXqbuh45/srcLclDebugProjectContainer.php
on line 1029

Посмотрев в указанный сгенерированный контейнерный класс, я нашел это:

/**
* Gets the public 'cache.app' shared service.
*
* @return \Symfony\Component\Cache\Adapter\TraceableAdapter
*/
protected function getCache_AppService()
{
return $this->services['cache.app'] = new \Symfony\Component\Cache\Adapter\TraceableAdapter(new \Symfony\Component\Cache\Adapter\MemcachedAdapter('kRTmoLLARw'));
}

Я понятия не имею, как он генерируется с этой строкой в ​​качестве аргумента, это должен быть клиент memcached!

Есть идеи? Что-нибудь, что я могу проверить без отладки генерации класса контейнера?

1

Решение

Вы пытались получить CacheAdapter из Service-Container вместо создания нового экземпляра здесь:

return $this->services['cache.app'] = new \Symfony\Component\Cache\Adapter\TraceableAdapter(
new \Symfony\Component\Cache\Adapter\MemcachedAdapter('kRTmoLLARw') // new instance?
);

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector