gpt4 book ai didi

php - 使用相同凭据的两个单独连接是否共享一个线程?

转载 作者:行者123 更新时间:2023-11-29 16:48:31 25 4
gpt4 key购买 nike

正在将 PHP 中的 mysqli_ 功能转换为使用 PDO。我已经完成了几页 CMS 的概念验证,这让我陷入了持久连接的兔子洞。

为了避免杂乱无章,本质上我使用 mysqli_connect 的旧方法连接到 mysql 服务器,并创建一个新的 PDO 资源,但是,我只看到一个打开的线程。由于它们都使用相同的凭据进行连接,因此它们是否共享开放线程?任何额外的信息也将受到赞赏。

谢谢!

不幸的是,该代码是政府拥有的,但如果有帮助的话,我可以发布一些精简的片段。

数据库类连接方法:

try {
$dsn = "mysql:host="._DBLocation.";dbname="._DBName.";charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_PERSISTENT => true
];

$dbh = new PDO($dsn,_DBUser,self::db_pass(),$options);
self::$conn = $dbh;
return $dbh;

}
catch (exception $e) {
print $e->getMessage();
}

db_pass 方法从远程服务器上的文本文件中获取密码。该类只是通过 $pdo = CLASS::connect();

调用

mysqli 连接是类似的,但是它只建立一次并存储在 session 中。密码的检索方式相同,并且还使用数据库位置和名称的预设常量。

$_SESSION['sql'] = mysqli_connect(_DBLocation,_DBUser,$passwordVar);

希望这会有所帮助!

最佳答案

您可以创建一个 DbHandler 类并在需要时调用适当的变量。

注意:这是示例代码 - 您可能需要进行更改以适合您的代码库。

class DbHandler
{
protected $pdo;
protected $mysqli;

public function __construct($pdo, $mysqli)
{
$this->pdo = $pdo;
$this->mysqli = $mysqli;
}
}

然后像这样使用它:

$dbHandler = new DbHandler(new PDO(.. pdo deets ..), mysqli_connect(.. mysqli deets ..));

print_r($DbHandler->pdo); # will output a PDO object
print_r($DbHandler->mysqli); # will output whatever mysqli is.. an array? Not sure

关于php - 使用相同凭据的两个单独连接是否共享一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52953222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com