【发布时间】:2013-03-31 00:49:03
【问题描述】:
所以我正在处理很多类...在我将会话类(验证和创建/销毁会话)包含到我的用户类(用户操作、登录、注册等)之前,一切都运行良好。
基本上,我得到一个“mysqli Too many connections!”错误...我认为这是因为我的会话类包含在用户类中,反之亦然:
__用户类的构造:
$this->db = new DB($db);
$this->password = new Password();
$this->session = new Session($db);
$db 只是一个数据库信息数组...
类Session的__构造:
$this->error = new Error();
$this->users = new User($db);
$this->db = new DB($db);
所以你看到它们是如何相互包含的,我认为这就是导致我的连接错误的原因。
【问题讨论】:
-
你必须消除循环。如果用户创建了一个会话,该会话创建了一个用户,它创建了一个会话,等等......你基本上会杀死你的系统。谢天谢地,在内存不足之前,你已经用完了 mysql 连接槽,但无论哪种方式,你都有一个必须打破的无限循环。
-
为每个用户创建一个新的数据库句柄是个坏主意。不要这样做。相反,使用persistent connections 的公共连接池。
标签: php mysql oop class mysqli