我正在使用 codeigniter 开发基于 Web 的应用程序。这将被各种不同的客户端使用,每个客户端都有自己的数据库但相同的代码库。
我希望能够根据访问它的客户端(即基于 url)在 database.php 中设置数据库的名称。因此,如果 clientA.com 访问它,则应将数据库名称设置为 clintA,如果 clientB.com 访问它,则应将其设置为 clientB.com。
关于我应该如何解决这个问题的任何想法。
我正在使用 codeigniter 开发基于 Web 的应用程序。这将被各种不同的客户端使用,每个客户端都有自己的数据库但相同的代码库。
我希望能够根据访问它的客户端(即基于 url)在 database.php 中设置数据库的名称。因此,如果 clientA.com 访问它,则应将数据库名称设置为 clintA,如果 clientB.com 访问它,则应将其设置为 clientB.com。
关于我应该如何解决这个问题的任何想法。
有几种可能的方法,但可能最简单的方法是在配置文件中使用数据库组。在您的 application/config/database.php 文件中,使用多维数组为每个客户端创建不同的组。所以你可以有:
$db['clientA']['hostname'] = ...
$db['clientA']['username'] = ...
etc...
$db['clientB']['hostname'] = ...
$db['clientB']['username'] = ...
etc...
现在在您的应用程序中,您可以将所需的组传递给您的加载命令:
$this->load->database('clientA');
现在将它与 getenv 结合起来获取主机名,你应该已经准备好了:
$clientHost = getenv('HTTP_HOST');
$this->load->database($clientHost);
当然可能需要更多的逻辑,但这应该让你开始。