来自多个客户的相同Codeigniter代码安装的多个应用程序

时间:2017-12-20 11:15:56

标签: php codeigniter

我的产品有50个客户。每个客户都有一个MYSQL数据库,我正在使用Codeigniter。

我有50个子文件夹,例如domain.com/client1 domain.com/client2,依此类推 我想只为我的所有客户和不同的数据库和子域安装一个 我不想为每个新客户端安装多个副本

理想情况下是domain.com/app /

实现这一目标的最佳方法是什么? 我尝试为每个客户动态创建文件夹,并在客户注册时编写diff配置文件。 我想我在这里做错了。

1 个答案:

答案 0 :(得分:2)

您想要的是多租户架构,即所有客户的相同代码,但每个客户都有专用数据库。

1)您可以创建一个主数据库来记录用户及其关联的数据库。一旦用户注册,就为它们创建一个新数据库并更新主表,记录与该用户关联的数据库名称。

2)当用户登录时,您需要使用主表数据进行身份验证,一旦通过身份验证,您就拥有与用户关联的数据库名称。 获得数据库名称后,需要将数据库切换到用户的数据库。 CodeIgniter中有可用的功能,您可以在其中更新$db变量:

$this->db = $this->load->database();

一旦完成,所有操作将仅对相关用户的数据库执行。

注意:您需要在所有必需文件中更改$db变量,或者您可以全局更改。

希望这有帮助。

修改

要全局加载数据库,您可以将数据库保存在会话中,并在帮助文件中创建一个函数(使用会话中的数据库名称),该函数将切换数据库。您只需要在主控制器中加载帮助器,这将全局切换$db