【发布时间】:2018-08-07 10:23:24
【问题描述】:
我的任务是为多租户创建一个现有项目,因为该应用程序有很多客户,所以我们决定这样做。
我们已经合并了我们的源代码以适用于任何数据库,所有客户端的所有源代码都是相同的。
现在,之前的数据库连接是使用每个脚本中包含的一个配置文件进行的。
但是,正如您所知,源现在有多个客户端,其中的数据库不同,我们坚持使用客户端管理数据库。
最初,
http://localhost/workspace/client/ --> 这是给客户端的 URL,现在我使用 htaccess 将它重定向到 index.php 并基于客户端/我知道这个包将使用哪个客户端。
有不同的客户, http://localhost/workspace/clien1/ http://localhost/workspace/clien2/ http://localhost/workspace/client3/
等等..
现在,在 index.php 页面重定向到 login.php,但没有根据客户端为 DB 设置配置。
如果有人处理过这个问题,请帮助我。
提前致谢。
【问题讨论】:
-
在您在
index.php中重定向到login.php之前,您应该设置一个cookie 或一个会话变量,指定应该为这个特定客户端使用哪个数据库配置。然后login.php可以读取cookie/session变量并设置相关的DB配置。 -
您好 GELOV,感谢您的回答。在这种情况下,我在 COOKIE 之上选择了 SESSION,它正在部分工作。对在任何网络应用程序上存储会话的任何特定长度还有疑问?还是一次启动数千个会话会影响应用程序的性能?在这种情况下,最佳做法是什么?
-
由于会话存储在服务器上 - 这集中了负载。实际负载将取决于您存储会话的方式(在文件系统上、通过
igbinaryPHP 扩展、在关系数据库中、在 Redis 中等)如果您使用 cookie - 您不必在服务器上存储任何内容因为 cookie 包含(以加密形式)用户 ID 和到期时间。对您的服务器的每个请求都会收到一个更新的 cookie 并带有新的过期时间 - 这样您就可以在收到过期的 cookie 时强制重新登录。
标签: php mysql multi-tenant multiple-databases