繁体   English   中英

类循环创建了太多连接的mysql

[英]Class loop creates mysql too many connections

所以我正在使用很多类......一切正常,直到我将我的会话类(验证和创建/销毁会话)包含到我的用户类中(用户操作,登录,注册等)。

基本上,我得到了一个“mysqli太多连接!” 错误...我认为这是因为我的会话类包含在用户类中,反之亦然:

__construct类用户:

$this->db = new DB($db);
$this->password = new Password();
$this->session = new Session($db);

$ db只是一个数据库信息数组......

__课程类会话:

 $this->error = new Error();
 $this->users = new User($db);
 $this->db = new DB($db);

所以你看他们两个如何相互包容,我认为这是导致我的连接错误的原因。

您必须先创建一个,然后将其传递给另一个的构造函数。

喜欢:

会议:

__construct($db){
  $this->db = $db; //Don't reconstruct
  $this->users = new User($db,$this);
  ...
}

用户:

__construct($db,$session){
...
  $this->db = $db; //Don't re-construct
  $this->session = $session;
...
}

创建数据库连接不是用户的工作。 (当你想到它时,它没有多大意义,是吗?)

而是在构造函数中请求数据库连接。

class User {
    public function __construct(DB $db) {

这样,您可以在整个应用程序中重用连接对象。

在会话类中

$this->db = $db;

并在您的用户类

$this->session = new Session($this->db);

如果你创建第三个类,用两个类构造并在第3个类上运行循环? 然后在UserSession上运行所有数据库实例? 我不知道?

__construct类用户:

 $this->password = new Password();

__课程类会话:

$this->error = new Error();

__Settruct类UserSession:

$this->db = new DB($db);
$this->users = new User($db);
$this->users = new Session($db);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM