[英]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.