我的服务管理器中存储了一个名为“dbAdapter”的数据库适配器。我正在寻找一种方法来断开连接,然后使用稍微不同的配置重新连接到此适配器,可能需要多次。
原因是我有很多客户,他们的数据库结构是100%是一样的。我正在编写一个cron作业,它将对每个数据库进行维护,但它必须连接到第一个,执行它的操作,删除连接并连接到下一个...直到它不在数据库中。
我正在查看源代码,但我只能在Zend \ ServiceManager \ ServiceManager.php中找到一个名为unregisterService的受保护方法,看起来它会做我想要的但是它是受保护的方法因此我无法调用它来自我的控制器。
是否可以“过期”服务管理器密钥并强制它在下次调用时重新创建它?
答案 0 :(得分:4)
您可以在$allowOverride
中将true
设置为ServiceManager
,然后在名称null
下注册dbAdapter
值。
$serviceManager->setAllowOverride(true)
->setService('dbAdapter', null)
->setAllowOverride(false);