0

您好,我序列化了一个对象(类用户)以将其设置在 $_SESSION 数组中,当用户登录我的网站时,该对象被设置在 $_SESSION 中,后来被反序列化以使用方法,但我有一个问题,在我通过的那个类上__constructor 中的 PDO 对象(连接到 MySQL)并且我将成员变量设置为 PDO 对象,但是当我反序列化“容器对象”时它不执行 __constructor 函数,因此作为 PDO 对象的成员变量不会设置.. 我也尝试序列化 PDO 对象,但我无法序列化 PDO 对象,在扩展的“MyPDO”类中添加 __sleep() 和 __wakeup() 函数我该如何解决?谢谢

4

2 回答 2

0

首先,您不应该将 pdo 对象存储在会话中,因为打开的连接总数是有限的,这将导致您在所有连接都累积时出现错误“连接太多”。这意味着 max_connection 有 mysql 配置设置 my.cnf,它定义了可以与 mysql 数据库建立的最大并发连接。所以你不应该在会话中保存 pdo。建议状态甚至应在创建 sql 查询字符串后创建连接。

对于每个请求,您都应该创建新连接。如下

// create sql query
// create connection to database
// begin transaction if require
// prepare statement 
// execute query 
// close statement object
// // commit changes if transaction 
于 2012-11-01T14:16:26.523 回答
0

因此,您可以简单地在会话中存储用户详细信息数组。除了这个会话之外是对象存储而不是文件存储,因此您可以将 PDO 直接存储到会话而无需序列化 PDO 对象。

于 2012-11-21T14:15:51.657 回答