Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于会话和其他所有内容的自定义PDO数据库类_Php_Database_Session_Pdo - Fatal编程技术网

Php 用于会话和其他所有内容的自定义PDO数据库类

Php 用于会话和其他所有内容的自定义PDO数据库类,php,database,session,pdo,Php,Database,Session,Pdo,我有一个经过良好测试的定制PDO数据库类。有些东西让我发疯。您是否为数据库驱动的会话处理程序类和web应用程序的其余部分使用相同的类(相同的连接),或者为会话和web应用程序的其余部分打开两个数据库连接?我正在使用依赖关系注入器。非常感谢您的回答/建议。如果您连接到不同的db服务器和/或具有不同凭据的同一个db服务器,这是您唯一需要多个连接的时候。谢谢。这意味着我可以将现有的db实例传递给dbsession处理程序?最近我遇到了一些问题,例如,begintransaction在会话类中运行InI

我有一个经过良好测试的定制PDO数据库类。有些东西让我发疯。您是否为数据库驱动的会话处理程序类和web应用程序的其余部分使用相同的类(相同的连接),或者为会话和web应用程序的其余部分打开两个数据库连接?我正在使用依赖关系注入器。非常感谢您的回答/建议。

如果您连接到不同的db服务器和/或具有不同凭据的同一个db服务器,这是您唯一需要多个连接的时候。谢谢。这意味着我可以将现有的db实例传递给dbsession处理程序?最近我遇到了一些问题,例如,begintransaction在会话类中运行InInQuery,以及在其他地方执行db查询。我真的在考虑把封装在自定义类中的ThidPDO去掉。还是我做错了什么?好吧,你怎么做完全取决于你自己。但是,如果您开始保持打开的多个连接,您可能会遇到各种各样的问题。e、 g.在连接#1上启动事务,然后以某种方式开始使用连接#2,在该事务不存在的地方。您还可以轻松地触发多个会话之间的死锁。通常会话与业务数据存储在同一数据库中。因此,只需要一个数据库连接。我想不出一个场景,其中每个命名目的有两个连接是有意义的。此外,由于必须建立两个数据库连接,这会降低性能。所提到的依赖项注入与大量的数据库连接无关。@MarcB绝对!我不想看起来聪明,但你所描述的也发生在单连接上。wodoo魔术发生在
会话\u set\u save\u handler()
中。我在会话处理程序
$database->beginTransaction(),$database->query(…),$database->endTransaction()
之外的位置出错,同时在会话处理程序
$database->beginTransaction(),$database->query(…),$database->endTransaction()
中启动。由于会话_set _save _handler()的这种不可控行为,持有连接的数据库类会产生错误。