gpt4 book ai didi

php - 为什么持久 PDO 连接会与每个请求建立新连接?

转载 作者:行者123 更新时间:2023-11-28 23:21:59 25 4
gpt4 key购买 nike

这是我通过 PDO 持久连接连接 MySQL 的数据库类:

class database{
private $_db;
public function conn()
{
$user = 'xxx';
$pass = 'xxxxxxx';
try
{
$this->_db = new PDO('mysql:dbname=x;host=x.x.x.x',$user,$pass,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',PDO::ATTR_PERSISTENT => true));
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->_db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $this->_db;
}

catch(PDOException $e)
{
return "-1";
}
}

}

我在另一个函数中调用这个类来查询数据库。每次我调用该函数时,都会在数据库中创建一个新连接。为什么持久 pdo 连接会为每个请求创建一个新连接?

最佳答案

我正在使用我在项目开始时定义的静态类,唯一不好的部分是您无法创建多个数据库。

<?php

/**
*
************************************************
* PlainFramework *
************************************************
*
* Created by Niels Hamelink
* File: class.database.php
* Created at: 14-11-2016 02:08
**/
class Database
{
private static $_db;

public static function connect($dsn, $username, $password, $debug)
{
try
{
$_db = new PDO($dsn, $username, $password);
} catch(PDOException $e)
{
if($debug)
Application::throw_error($e->getMessage());
}
}

public static function close()
{
$_db = null;
}

public static function isConnected()
{
return isset($_db)
&& $_db != null;
}

public static function getPDO()
{
if(!isset($_db))
$_db = null;

return $_db;
}

public static function executeQuery(Query $query)
{
try
{
return Database::getPDO()->query($query->toString());
} catch(PDOException $ex)
{
Application::throw_error($ex->getMessage());
}
}

}

关于php - 为什么持久 PDO 连接会与每个请求建立新连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41161946/

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