Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 来自同一Codeigniter代码安装的多个应用程序适用于多个客户_Php_Codeigniter - Fatal编程技术网

Php 来自同一Codeigniter代码安装的多个应用程序适用于多个客户

Php 来自同一Codeigniter代码安装的多个应用程序适用于多个客户,php,codeigniter,Php,Codeigniter,我的产品有50个客户。每个客户都有一个MYSQL数据库,我正在使用Codeigniter 我有50个子文件夹,例如domain.com/client1 domain.com/client2等等 我只想为我的所有客户和不同的数据库和子域安装一个 我不希望每个新客户端都有多个安装副本 理想情况下,domain.com/app/ 实现这一目标的最佳方式是什么? 我尝试为每个客户动态创建文件夹,并在客户向我们注册时编写diff-config文件。 我认为我在这里做错了什么。您想要的是类似于多租户体系结构

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

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

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

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

您想要的是类似于多租户体系结构的东西,即所有客户都有相同的代码,但每个客户都有专用的数据库

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

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

$this->db = $this->load->database();
完成后,所有操作将仅对相关用户的数据库执行

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

希望这有帮助

编辑


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

您需要的是类似于多租户体系结构的东西,即所有客户的代码相同,但每个客户都有专用的数据库

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

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

$this->db = $this->load->database();
完成后,所有操作将仅对相关用户的数据库执行

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

希望这有帮助

编辑


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

您能告诉我们每个客户需要不同数据库的原因吗?如果您不需要为每个客户建立单独的数据库,有时有更好的方法来实现这一点。出于安全和数据分离的考虑,您可能需要使用此功能,但了解这一点会很有用。我希望为每个客户保留记录,说明为什么我需要不同的数据库您的应用程序是否对每个客户都进行了身份验证?是的,我已对每个客户进行了跟踪。只是数据库不同,其他一切都不同(除了url)是一样的吗?你能告诉我们为什么每个客户需要一个不同的数据库吗?如果你不需要为每个客户都有一个单独的数据库,有时有更好的方法来实现这一点。为了安全和数据分离,你可能需要有这个数据库,但知道这一点会很有用。我想为每个客户保留一个记录为什么我需要不同的数据库?您的应用程序是否对每个客户都进行了身份验证?是的,我对每个客户都进行了跟踪。只是数据库不同,其他一切都不同(除了url)是否相同?是否可以全局更改db变量以及如何更改?@shine:请检查我答案的编辑部分。是否可以全局更改db变量以及如何更改?@shine:请检查我答案的编辑部分。