Zend框架2 - 写入配置文件

时间:2016-01-05 17:13:28

标签: php zend-framework2 config high-availability

在配置文件中,我已将地址存储到我的网站所依赖的服务器上。

如果此服务器出现故障,我想使用备份服务器。 (永久,不仅仅是为了这个要求)。因此,如果server1失败,我想使用server2。

我找到了在配置文件中更改地址的最佳方法。但据我所知,Zend Framework 2无法写入配置文件。

有什么想法吗?

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.distadresses.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服务器以检查它是否在线,如果服务器暂时不可用,则返回备用(备份)服务器。