Php 这是共享和关闭PDO连接的正确方法吗?

Php 这是共享和关闭PDO连接的正确方法吗?,php,mysql,pdo,Php,Mysql,Pdo,我们的网站出现了一些问题,我认为在使用旧代码运行大容量进程时,数据库连接过载。这段代码根本没有处理关闭数据库连接的问题 您能否确认这是进行共享数据库连接的有效方法 common.php(包含在服务器上每个php文件的顶部): class_example.php: public static function myFunctionName($) { // Example query $sql = "SELECT * "; $stmt = $GLOB

我们的网站出现了一些问题,我认为在使用旧代码运行大容量进程时,数据库连接过载。这段代码根本没有处理关闭数据库连接的问题

您能否确认这是进行共享数据库连接的有效方法

common.php(包含在服务器上每个php文件的顶部):

class_example.php:

public static function myFunctionName($) {

        // Example query
        $sql = "SELECT * ";
        $stmt = $GLOBALS['global_conn']->prepare($sql);
然后我将执行以下操作,在最后将共享全局连接置零

require_once "/includes/db.php";
require_once "/includes/class.php";

class->myFunctionName();

$global_conn = null;

连接变量的一个“null”是否足够。我不需要在使用它的函数中这样做,是吗?

< p>我不太喜欢在任意方法中间的任意地方随机地弹出全局变量,但是从性能上讲,通过设置
PDO::ATTR_persistent
标志(您实际上没有说),只要不打开持久连接,就可以在脚本中有效地使用单个连接。PDO没有用于关闭连接的类方法,因此:

连接在该PDO对象的生存期内保持活动状态。到 关闭连接时,您需要通过确保 所有对它的剩余引用都将被删除,您可以通过指定
NULL
保存对象的变量。如果你不这样做 显式地,当您的 脚本结束

最后一条语句意味着,如果您想尽早发布它,您只需要显式地执行它(即,您不再需要它,但您的脚本仍有工作要做)


(1) 数据库连接不是特殊变量。它们可以像任何其他类型一样用作函数参数或类属性,因为它们是对象,所以传递的是对同一实例的引用。例如:

public static function myFunctionName(dbConnection $global_conn) {
}

设置全局数据库连接。。。为什么?如果我有多个函数都需要数据库连接,那么全局连接不是一个好方法,而不是创建一个连接并关闭每个函数?全局连接不是一个好方法。。。不!我宁愿坚持oop原则——也许会有帮助
public static function myFunctionName(dbConnection $global_conn) {
}