问题
我需要使用.env
设置symfony Framework.yaml参数framework.lock
和2+Memcached服务器.但当我try 这样做时,它无法识别2台服务器,但只识别了一台服务器,并且出现了故障.
Symfony Lock Docs:https://symfony.com/doc/current/lock.html
我try 过的(使用代码片段):
Passing via .env
- 我有
.env
个文件,内容如下:
MEMCACHE_SERVERS='memcached://m1.docker:11211,memcached://m2.docker:11211'
- 有
framework.yaml
个文件,内容如下:
framework:
lock: '%env(MEMCACHE_SERVERS)%'
- 让下面的
controller method
来查看创建的锁对象作为调试
/**
* @Route("/example")
*/
public function exampleAction(LockFactory $lockFactory): JsonResponse
{
dd($lockFactory->createLock('testing-lock', 2));
}
- 它让我跟在后面.其中
host
个被识别为m1.docker:11211,memcached"
个,第二个甚至没有被检测到.
-store: Symfony\Component\Lock\Store\MemcachedStore {#22171 ▼
-memcached: Memcached {#23004 ▼
servers: array:1 [▼
0 => array:3 [▼
"host" => "m1.docker:11211,memcached"
"port" => 11211
"type" => "TCP"
]
]
options: {▶}
}
-initialTtl: 300
-useExtendedReturn: null
}
Passing directly to lock
parameter
- 如果我将值直接传递给
framework.lock
,而不使用.env.它起作用了.
lock: ['memcached://m1.docker:11211','memcached://m2.docker:11211']
- 结果:
-store: Symfony\Component\Lock\Store\CombinedStore {#22386 ▼
-stores: array:2 [▼
0 => Symfony\Component\Lock\Store\MemcachedStore {#23199 ▼
-memcached: Memcached {#22471 ▼
servers: array:1 [▼
0 => array:3 [▼
"host" => "m1.docker"
"port" => 11211
"type" => "TCP"
]
]
options: {▶}
}
-initialTtl: 300
-useExtendedReturn: null
}
1 => Symfony\Component\Lock\Store\MemcachedStore {#22514 ▼
-memcached: Memcached {#22625 ▼
servers: array:1 [▼
0 => array:3 [▼
"host" => "m2.docker"
"port" => 11211
"type" => "TCP"
]
]
options: {▶}
}
-initialTtl: 300
-useExtendedReturn: null
}
]
问题
这个问题.如何使用.env将2+Memcached服务器传递给Framework.lock?