php - 避免 "Too many connections"错误的最佳做法

标签 php mysql database-connection

我最近注意到我的网站上有几个“连接太多”错误。我知道“解决”这个问题的原因和方法,但我不得不承认我不知道避免这个问题的最佳实践或如何改进我的代码。

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

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 个表(不相关),我需要在不打开新连接的情况下从它们查询信息。

最佳答案

回答您的具体问题

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

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

3) 有优化代码的余地。你应该创建一个 连接类并使用单例模式获取数据库连接 需要时。

关于php - 避免 "Too many connections"错误的最佳做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50575011/

相关文章:

php - 使用 PHP 在 CSS 中搜索内容

php - 什么是 PHP header ?

mysql - 无法使用现有表在 bonfire 中创建模块

MySql Group by 和 Pivot

mysql - 出现“连接过多”错误后查询运行缓慢

mysql - node.js 中 Google Cloud mySQL 的连接字符串是什么?

php - 为一个数据库条目存储多个尺寸的多个图像

php - 为什么循环会恢复?

mysql - 连接 mySQL 上的排序依据和索引

mysql - Hibernate - 想要使用hibernate和springboot将网页与mysql数据库连接