php阻止每个请求中的数据库连接

php阻止每个请求中的数据库连接,php,Php,我在connection类中有一个方法,它返回一个dbconnection实例,这样我就可以用它进行查询 class Connection { public $dbh; // handle of the db connexion private static $instance; public $resultBool; public $connectedDbName; public $resultString; public $directed;

我在connection类中有一个方法,它返回一个dbconnection实例,这样我就可以用它进行查询

class Connection
{
    public $dbh; // handle of the db connexion
    private static $instance;
    public $resultBool;
    public $connectedDbName;
    public $resultString;
    public $directed;
    public static $deviceid;

    private function __construct()
    {
        $this->dbh = new PDO('mysql:host=localhost;dbname=webfilter;port=3306;connect_timeout=15', 'root', 'company');
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $this->dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $this->directed = false;
        $this->resultBool = true;
    }

    public static function getConnection()
    {
        if (!isset(self::$instance))
        {
            $object = __CLASS__;
            self::$instance = new $object;
        }

       ...
       return self::$instance;
}
在第一次请求时,需要一个连接,所以我进入了这个连接函数。但是为什么我需要再次建立连接,即使很明显我会使用相同的连接。。这似乎会导致性能问题

这是我的函数,它使真正的工作。我使用dbObject对db进行查询,但每次都需要连接实例(getconnection)来执行查询

    $dbObject = Connection::getConnection();
    $request = $dbObject->dbh->prepare($sql);
    $request->bindParam(':username', $username, PDO::PARAM_STR);

是否可以为相同用户的下一个请求保存现有连接,或者以其他方式传递连接操作

您已经使用了单例模式。这仅适用于一个请求中的多个连接。对于每个请求,该类都会创建连接类的新对象。无法在会话上序列化、取消序列化或保存PDO实例。我认为目前没有办法做到这一点。

您已经使用了单例模式。这仅适用于一个请求中的多个连接。对于每个请求,该类都会创建连接类的新对象。无法在会话上序列化、取消序列化或保存PDO实例。我认为目前没有办法做到这一点。

你知道单身模式吗?@sebastianbrosch no。。你能稍微谈谈它(为什么)吗?Singleton是一种模式,只创建一个类的一个对象。我可以为你提供一个解决方案——给我一点时间,你知道单子模式吗?@sebastianbrosch no。。你能稍微谈谈它(为什么)吗?Singleton是一种模式,只创建一个类的一个对象。我可以为你提供一个解决方案-给我一点时间