在配置文件中,我已将地址存储到我的网站所依赖的服务器上。
如果此服务器出现故障,我想使用备份服务器。 (永久,不仅仅是为了这个要求)。因此,如果server1失败,我想使用server2。
我找到了在配置文件中更改地址的最佳方法。但据我所知,Zend Framework 2无法写入配置文件。
有什么想法吗?
答案 0 :(得分:0)
但据我所知,Zend Framework 2无法写入配置文件。
是的,它可以。它有整个Zend\Config\Writer
组件。如果您使用的是默认的php数组配置文件,则可以像这样更改配置文件:
$path = 'config/autoload/local.php';
$config = include $path;
$config['key'] = 'new value';
$writer = new \Zend\Config\Writer\PhpArray();
$writer->toFile($path, $config);
如果您使用配置缓存,请不要忘记删除配置缓存。
但我认为有更好的方法可以做到这一点 - 您可以为每台服务器准备配置模板,而不是更改配置文件。因此,在config/autoload
目录中,您将拥有包含所需服务器的地址配置的文件adresses.local.server1.php.dist
和adresses.local.php.dist
。然后,如果您需要使用config for server1,只需复制它:
$ cp adresses.local.server1.php.dist adresses.local.php
答案 1 :(得分:0)
配置文件只能用于静态变量。
为了实现这一点,最好制作一个服务,将地址返回给服务器。例如ServerAddressProvider
。
$service = $serviceManager->get('Application\Service\ServerAddressProvider');
$address = $service->getServerAddress();
在您的服务中,您可以添加返回正确服务器地址的自定义逻辑。
在服务器内部,您可以在返回地址之前ping服务器以检查它是否在线,如果服务器暂时不可用,则返回备用(备份)服务器。