避免“连接太多”错误的最佳做法

问题描述 投票:1回答:1

我最近在我的网站上发现了几个“Too many connections”错误。我知道解决这个问题的原因和方法,但我不得不承认我不知道避免这个问题的最佳做法或如何改进我的代码。

我将发布一个理论代码(请假设一切正常),我请你们帮我解决一些问题,以及如何改进这些代码。这样我可以修复其他代码。

connection.php

$conn = new PDO('mysql:host=HOST;dbname=DATABASE;charset=utf8','USER', 'PASSWORD');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

my_page.php

include("connection.php");

$stmt = $conn->prepare("SELECT * FROM tableA WHERE condition = :condition");
$stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
$stmt->execute();
$row = $stmt->rowCount();


function getName($id){
global $conn;
    $stmt = $conn->prepare("SELECT * FROM tableB WHERE condition = :condition");
    $stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
    $stmt->execute();
    $row = $stmt->rowCount();
}

function getCompany($id){
global $conn;
    $stmt = $conn->prepare("SELECT * FROM tableC WHERE condition = :condition");
    $stmt->bindParam(':condition', $condition, PDO::PARAM_INT);
    $stmt->execute();
    $row = $stmt->rowCount();
}

我的问题是:

1)上面的代码中打开了多少个数据库连接?

2)每次进行查询时,使用($ stmt = $ conn-> prepare),都会打开一个新连接?

3)有一种方法可以优化上面的代码,假设INNER JOIN或任何其他查询优化是不可能的?我的意思是,有3个表(不相关),我需要从它们查询信息而不打开新的连接。

php mysql database-connection
1个回答
0
投票

回答你的具体问题

1)每次调用“my_page.php”的一个连接是打开的。

2)每次调用“my_page.php”时都会打开一个新连接。

3)优化代码的范围。您应该创建一个连接类,并在需要时使用单例模式来获取数据库连接。

© www.soinside.com 2019 - 2024. All rights reserved.