繁体   English   中英

避免“连接过多”错误的最佳实践

[英]Best practices to avoid “Too many connections” error

我最近发现我的网站上出现几个“连接过多”错误。 我知道“解决”此问题的原因和方式,但是我不得不承认我不知道避免此问题或如何改进代码的最佳实践。

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

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)有优化代码的范围。 您应该创建连接类,并在需要时使用单例模式获取数据库连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM