gpt4 book ai didi

php - 每次都应该使用 PDO::ATTR_PERSISTENT 吗?

转载 作者:IT王子 更新时间:2023-10-28 23:55:28 29 4
gpt4 key购买 nike

当使用 PDO 建立与数据库的连接时,是否应该每次都使用 PDO 属性 PDO::ATTR_PERSISTENT?它说这会为该用户创建一个持久连接,并且会在您每次请求数据库连接时获取相同的连接,而不是重新建立一个新连接。为什么这不是默认值?有什么理由不使用它吗?

最佳答案

如果您没有正确处理事务,可能会导致事务中已经存在“新的”持久连接,从而导致困惑。

只是一个由以下代码引起的简单情况:

<?php

$pdo = getCustomPersistantPDO();
$pdo->beginTransaction();
if( rand() % 2 === 0 ) {
//simulate a poorly handled error
exit();
}
$pdo->commit();

?>

请求 1:

(starts w/o a transaction open)
openTransaction
incorrectly handled error
(never closes transaction)

请求 2:

(start w/ a transaction open, because it was not closed in the previous connection.)
openTransaction -> fails due to already open

顺便说一句,示例的正确版本是:

<?php

$pdo = getCustomPersistantPDO();
$pdo->beginTransaction();
if( rand() % 2 === 0 ) {
//simulate a correctly handled error
$pdo->rollBack();
exit();
}
$pdo->commit();

?>

关于php - 每次都应该使用 PDO::ATTR_PERSISTENT 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995982/

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